gpt4 book ai didi

rust - 为什么这个 Rust 2018 代码编译时使用 `cargo build` 而不是使用 rustc?

转载 作者:行者123 更新时间:2023-11-29 08:03:36 25 4
gpt4 key购买 nike

当使用 Cargo build 编译下面的代码片段时,借用检查器似乎没问题,但是当使用 rustc 时,我收到错误

error[E0502]: cannot borrow `char_counts` as mutable because it is also borrowed as immutable
--> src/lib.rs:14:17
|
10 | let count = char_counts.get(&char);
| ----------- immutable borrow occurs here
...
14 | char_counts.insert(char, rem);
| ^^^^^^^^^^^ mutable borrow occurs here
...
19 | }
| - immutable borrow ends here

有什么想法为什么会发生这种情况吗?

use std::collections::HashMap;

pub fn anagram(word: &str, another_word: &str) -> i32 {
let mut char_counts = HashMap::new();
for char in word.chars() {
let count = char_counts.entry(char).or_insert(0);
*count += 1;
}
for char in another_word.chars() {
let count = char_counts.get(&char);
if let Some(val) = count {
let rem = val - 1;
if rem > 0 {
char_counts.insert(char, rem);
} else {
char_counts.remove(&char);
}
}
}
println!("{:?}", char_counts);
return char_counts.keys().len() as i32;
}

cargo --versionrustc --version 命令均输出 1.33

最佳答案

如果你有non-lexical lifetimes,这个函数将可以正常编译。启用并且没有它们就无法编译。 2018 版默认启用它们。也许您的 Cargo.toml 中有 edition = "2018",但直接使用 rustc 时没有将其作为参数传递?

关于rust - 为什么这个 Rust 2018 代码编译时使用 `cargo build` 而不是使用 rustc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55082486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com