gpt4 book ai didi

arrays - Rust中的意外行为 “for in n..m”

转载 作者:行者123 更新时间:2023-12-03 11:41:28 25 4
gpt4 key购买 nike

我面临着意外的行为。我试图通过调试自己弄清楚,但这没有帮助。
P.S.对不起,如果问题会变得愚蠢。
src/main.rs

use test_crate::radix_tree_1::Node;

fn main() {
let mut node = Node {
label: String::from("test.com"),
nodes: Vec::new(),
};
node.insert(String::from("test.com/company"));
println!("{:?}",node);
}
src/radix_tree_1.rs
#[derive(Debug)]
pub struct Node {
pub label: String,
pub nodes: Vec<Node>,
}

//current node:
//let mut node = Node {
// label: "test.com",
// nodes: Vec::new(),
//};
impl Node {
pub fn insert(&mut self, s: String) {
//inserting test.com/comapany
let parts: Vec<String> = s.split("/").map(|x| String::from(x)).collect();
//parts [test.com,company]
let parts_len = parts.len();
//parts_len 2
let mut reached: String = String::new();
//reached ""
let prefixs: Vec<String> = self.label.split("/").map(|x| String::from(x)).collect();
//prefixs [test.com] from self.label = test.com
let prefixs_len = prefixs.len();
//prefixs_len = 1
println!("{:?}, {:?}, {}",parts, prefixs, parts_len);
for index in 0..parts_len-1 {
// for index 0,1
println!("index {}", index);
if index >= prefixs_len {
// if 0 >= 1
println!("i>=prefixs.len");
self.nodes.push(Node {
label: parts[index..].iter()
.map(|s| {
String::from(s)
}).collect(),
nodes: Vec::new(),
})
} else {
// else
if parts[index] == prefixs[index] {
//if test.com == test.com
reached.push_str(prefixs[index].as_str());
// reached = test.com
println!("{}",reached);
} else {
println!("parts[index] != prefixs[index]");
}
}
}
}
}
我与println垃圾邮件!并在代码中注释以进行调试,为了您更好地理解,我不会将其删除。
此conole输出:
["test.com", "company"], ["test.com"], 2
index 0
test.com
Node { label: "test.com", nodes: [] }
期望:达到指数--- 1
现实:“仅”适用于索引--- 0
问题出在哪里?

最佳答案

范围..已经是排他性的(不包括最终值),无需在其顶部减去1。

关于arrays - Rust中的意外行为 “for in n..m”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65991766/

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