Как проверить правильность имени источника данных?

Я использую OptsBuilder, передавая имя источника данных для создания пула соединений:

let mut opts = mysql::OptsBuilder::from_opts(dsn);
opts.stmt_cache_size(0);
let pool = mysql::Pool::new_manual(1, 3, opts).expect("Could not connect to MySQL");

Если я передам недопустимый DSN, код паникует:

thread 'main' panicked at 'URL ParseError { relative URL without a base }', ', /path/.cargo/registry/src/github.com-1ecc6299db9ec823/mysql-16.0.2/src/conn/opts.rs:827:25

Как я могу обработать ошибку или заранее проверить, чтобы не паниковать?

На всякий случай: это Opts::from паника?

Boiethios 03.07.2019 14:05

Я не знаю эту библиотеку, но я бы попытался создать Opts с from_url, чтобы быть уверенным, что Into<Opts> не паникует

Boiethios 03.07.2019 14:07

@FrenchBoiethios прав, from_opts уже использует from_url с unwrap()

Ömer Erden 03.07.2019 14:10
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
3
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете создать Opts с from_url, чтобы быть уверенным, что после этого он не выйдет из строя:

let opts = match Opts::from_url(dsn) {
    Ok(opts) => opts,
    Err(e) => panic!(),// manage error
};
let mut opts = mysql::OptsBuilder::from_opts(opts);
opts.stmt_cache_size(0);
let pool = mysql::Pool::new_manual(1, 3, opts).expect("Could not connect to MySQL");

Команда разработчиков должна реализовать TryFrom вместо From.

Boiethios 03.07.2019 14:14

спасибо, насколько хорошо/плохо использовать Opts::from_url(dsn).unwrap_or_else(|e| { //handle erro});

nbari 03.07.2019 14:17

@nbari Это очень идиоматично

Boiethios 03.07.2019 14:20

Другие вопросы по теме