Rust借用某些对象类型而不借用其他对象类型?

问题描述

我很难理解借款的工作方式,我一生也无法弄清这两种情况为何如此不同。起作用的部分受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函数中,您引用了Responseimmutable_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