私は Rust の学習を始めたばかりで、主に JavaScript のバックグラウンドを持っているため、借用システム全体とメモリ管理に関しては少し困惑しています。
次のコードがあります。
fn load(db: &MyPool, id: i32) -> &Account{
let accounts: Vec<Account> = db.prepare("SELECT id, balance, name FROM `accounts` WHERE `id`=?")
.and_then(|mut stmt| {
stmt.execute(&[&id]).map(|result| {
result.map(|x| x.unwrap()).map(|row| {
Account{
id: from_value(&row[0]),
balance: from_value(&row[1]),
name: from_value(&row[2])
}
}).collect()
})
}).unwrap();
&accounts[0]
}
そして、コンパイラがスローするすべてのエラーを修正することができました
/main.rs:42:4: 42:12 error: 'accounts' does not live long enough
これは、MySQL クエリから 1 つの結果を取得するための最良の方法ですか、それとも完全に間違っていますか?