我创建一个连接类型,即
let mut conn = Connection::open("sqlite.db").unwrap();
然后我将该类型与向量一起传递给我的 save_all 函数,如下所示:
pub fn save_all(conn: &mut Connection,
vehicles: Vec<Vehicle>) -> Result<(), Error> {
let tx = conn.transaction()?;
for v in vehicles {
let sql: &str =
"INSERT INTO local_edits (vehicle_id, make, model, color)
VALUES (:vehicle_id, :make, :model, :color)";
let mut statement = tx.prepare(sql)?;
statement.execute(named_params! {
":vehicle_id": v.vehicle_id,
":make": v.make,
":model": v.model,
":color": v.color})?;
};
tx.commit()?;
return Ok(());
}
这段代码似乎工作正常。这段代码真的正确吗?
如果我不在函数中创建我的conn
type &mut Connection save_all
,则代码不会为我编译。它告诉我:
Cannot borrow immutable local variable `conn` as mutable
我不太确定如何理解这一点。
将 conn 的“引用”传递给我的save_all
函数是否正确?
我不想将所有权转让给这个函数。我想我只是想让函数借用连接。