如何为逻辑运算符多次借用变量

How to Borrow variable multiple times for Logical Operator

我们如何多次使用一个变量作为逻辑运算的ref?例如,OR 语句?

let check:HashMap<i8, i8> = HashMap::new();
// insert some data into hashmap
if &check.contains_key(1) || &check.contains_key(3) {
    println!("YES!");

}

抱歉,刚接触 Rust,但正在努力学习

contains_key 的输入应该是引用(借用),正如 Chayim 所说,您可能需要括号来指定优先级。

use std::collections::HashMap;

pub fn main() {
    let check:HashMap<i8, i8> = HashMap::new();
    // insert some data into hashmap
    if (&check).contains_key(&1) || (&check).contains_key(&3) {
        println!("YES!");
    }
}

正如其他人所说,你不是在借用你认为的东西,但 rust 的规则意味着你不需要像调用 HashMap 的方法时那样借用。这更简单,我还让它可变,这样你就可以插入一个值并看到成功,以及查询失败。

use std::error::Error;
use std::collections::HashMap;

fn main() -> Result<(), Box<dyn Error>> {
    let mut check:HashMap<i8, i8> = HashMap::new();
    // insert some data into hashmap
    check.insert(1, 5);
    // Check for 1 or 3
    if check.contains_key(&1) || check.contains_key(&3) {
        println!("Contained a key of 1 OR 3!");
    }
    if check.contains_key(&3) {
        println!("Contained a key of 3!");
    }
    else
    {
        println!("Did not contain a key of 3!");
    }
    Ok(())
}

您不需要在借用结构方法之前指定 && mut。对于 arguments 是的,但不是方法本身,因为 Rust 中没有重载(就像在 C++ 或其他一些语言中一样),因此你调用它是明确的,所以 Rust 完成了工作给你借。

Link 到 this example 的在线 Rust 游乐场。