Я использую ящик mysql
, в частности метод query_first
. Выполнение следующего фрагмента кода отлично скомпилировано.
let foo : mysql::Result<Option<u64>> = tx.query_first("SELECT row_count();");
Для целей эргономии c я хочу встроить этот вызов на верхний уровень match
, чтобы можно было протестировать несколько случаев. Чтобы вывести недостающий тип, я использую оператор turbofi sh (см. Следующий фрагмент). Однако это не компилируется.
match tx.query_first::<mysql::Result<Option<u64>>>("SELECT row_count();") {
Ok(Some(num)) => {}
Ok(None) => {}
Err(e) => {}
};
Правильно ли я использую turbofi sh?
Ошибки компилятора:
error[E0107]: wrong number of type arguments: expected 2, found 1
--> src/main.rs:224:22
|
224 | match tx.query_first::<mysql::Result<Option<u64>>>("SELECT row_count();") {
| ^^^^^^^^^^^ expected 2 type arguments
error[E0277]: the trait bound `std::result::Result<std::option::Option<u64>, mysql::error::Error>: mysql_common::value::convert::FromValue` is not satisfied
--> src/main.rs:224:22
|
224 | match tx.query_first::<mysql::Result<Option<u64>>>("SELECT row_count();") {
| ^^^^^^^^^^^ the trait `mysql_common::value::convert::FromValue` is not implemented for `std::result::Result<std::option::Option<u64>, mysql::er
ror::Error>`
|
= note: required because of the requirements on the impl of `mysql_common::row::convert::FromRow` for `std::result::Result<std::option::Option<u64>, mysql::error::Err
or>`