我的代码:
fn request_add<T>(request: &mut Request, collection_name: &'static str) -> Fallible<Fallible<String>>
where
T: serde::Serialize + serde::de::DeserializeOwned,
{
let add_dao = dao::MongoDao::new(collection_name);
let obj = serde_json::from_reader::<Body, T>(request.body)?; //cannot move out of borrowed content
Ok(add_dao.add(&obj))
}
Run Code Online (Sandbox Code Playgroud)
我有一个cannot move out of borrowed content错误,因为request是一个参考,但为什么不serde_json::from_reader使用mut引用?为什么需要所有权?我该如何解决?
这将失败:
fn ppv(arr: &mut Vec<i32>) {
if arr.len() <= 0 {
return;
}
let mut pp: i32 = 0;
for &mut val in arr {
if val == pp {
pp = val;
}
}
println!("arr is {:?}", &arr);
}
Run Code Online (Sandbox Code Playgroud)
但这会过去:
fn ppv(arr: &mut Vec<i32>) {
if arr.len() <= 0{
return;
}
let mut pp: i32 = 0;
for &mut val in arr.into_iter() {
if val == pp {
pp = val;
}
}
println!("arr is {:?}", &arr);
}
Run Code Online (Sandbox Code Playgroud)
当我编译第一个时,它失败了: …