ЭтоНесовпадение в количестве/Типы аргументов
extern crate postgres;
use postgres::{Connection, SslMode};
struct User {
reference: String,
email: String,
firstname: String,
lastname: String
}
static DB_URI: &'static str = "postgres://postgres:[email protected]/test";
fn main() {
let conn = Connection::connect(DB_URI, &SslMode::None).unwrap();
let trans = conn.transaction().unwrap();
//...
}
fn insert_user<'a>(trans: &'a postgres::Transaction, user: &User) -> &'a postgres::Result {
//...
}
бросает ошибку
error: wrong number of type arguments: expected 1, found 0 [E0243]
fn insert_user<'a>(trans: &'a postgres::Transaction, user: &User) -> &'a postgres::Result {
^~~~~~~~~~~~~~~~
Что здесь отсутствует? Я просто хочу вернуть результат выполненного запроса.
UPDATE Так я изменил функцию строку:
fn insert_user(trans: &postgres::Transaction, user: &User) -> &postgres::Result<()> {
обмануть компилятор в выявлении правильного типа возвращаемого и он дал мне это:
mismatched types:
expected `core::result::Result<(), postgres::error::Error>`,
found `core::result::Result<postgres::Rows<'_>, postgres::error::Error>`
однако, когда я попытался чтобы соответствовать типу возврата следующим образом:
fn insert_user(trans: &postgres::Transaction, user: &User) -> &postgres::Result<postgres::Rows<'_>, postgres::error::Error> {
это теперь бросает новую ошибку:
error: use of undeclared lifetime name `'_` [E0261]
fn insert_user(trans: &postgres::Transaction, user: &User) -> postgres::Result<postgres::Rows<'_>, postgres::error::Error> {
^~
Это именно то, что он говорит. Вы указали неверное количество аргументов типа. ['Result'] (http://sfackler.github.io/rust-postgres/doc/v0.9.1/postgres/type.Result.html) принимает тип возвращаемого действительного значения. – Veedrac