gpt4 book ai didi

arrays - 如何在 RUST 中逐字节比较 2 个不同的字符串文字

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

我输入了两个字符串文字并将它们转换为字节数组,现在我正在尝试比较两个数组字节以检查是否匹配。如果匹配成功,我想将其保存到一个未知大小的数组find中,但是没有保存:

fn main() {
let mut m: u8 = 0;
// enter the first_name
let alpha = "fawad";
//covert name1 into array bytes
let name1 = alpha.as_bytes();
// enter the second_name
let input = String::new();
//covert name2 into array bytes
let name2 = input.as_bytes();
//want to create an unknown size of an array
let find: Box<[u8]>;
for (i, &place1) in name1.iter().enumerate() {
let place1 = name1[i];
for (j, &place2) in name2.iter().enumerate() {
let place2 = name2[j];
if place1 == place2 {
let find = place2;
m = m + 1;
} else {
break;
}
}
}
println!("comparison shows {:?}", find);
}

我得到:

error: expected one of `:`, `;`, `=`, or `@`, found `[`
--> src\main.rs:17:13

|
17 | let find[] : Box<[u8]>;
| ^ expected one of `:`, `;`, `=`, or `@` here

最佳答案

编译器消息不可重现,但您的代码揭示了一些误解。这里有一些提示,您可以如何更改它:

你想要一个未知大小的数组(它可能应该包含已经匹配的字节,所以它必须是可变的):

  • 替换let find : Box<[u8]>;通过 let mut find = Vec::new();

你想迭代name1和name2的字节

  • 替换for (i, &place1) in name1.iter().enumerate()通过 for &place1 in name1.iter()
  • 替换for (i, &place2) in name2.iter().enumerate()通过 for &place2 in name2.iter()

let variable = ...隐藏 variable 的所有先前定义.您不想隐藏变量 place1 , place2你想使用这些变量。

  • 删除let place1 = name1[i];
  • 删除let place2 = name2[j];

您想将匹配的字节添加到数组find .您的代码将再次隐藏 find 的定义。所以

  • 替换let find = place2;通过 find.push(place2);

关于arrays - 如何在 RUST 中逐字节比较 2 个不同的字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58510649/

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