问题描述
我很难理解借款的工作方式,我一生也无法弄清这两种情况为何如此不同。起作用的部分受https://users.rust-lang.org/t/rust-mutability-moving-and-borrowing-the-straight-dope/22166的启发,而没有起作用的部分是我试图使用Response
的{{1}}对象实现的目标。
reqwest
解决方法
如果查看text
方法here的定义,您会发现它在调用后消耗(移动)self
。因此,在调用text
方法之后,您将无法使用Response
,因为它根本不存在了。
但是在immutable_borrow_nok
函数中,您引用了Response
。 immutable_borrow_nok
不拥有它。引用传递的值不能使用。因此,Response
不能在immutable_borrow_nok
内部消耗(移动)。
如果您真的想在text
中使用immutable_borrow_nok
方法,则应按以下方式定义它:
// Response now owned by this function
fn immutable_owned_nok(owned: reqwest::blocking::Response) -> Result<()> {
println!("I am some json,I don't work {:#?}",borrowed.text());
Ok(())
}
但是您应该了解,在调用immutable_owned_nok
之后,您将无法再在代码中使用Response
。