我刚刚开始学习 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 查询中获得一个结果的最佳方法,还是我完全错了?