gpt4 book ai didi

rust - 打印结构的值-出现错误,可能是 `,`或 `}`之一

转载 作者:行者123 更新时间:2023-12-03 11:45:13 27 4
gpt4 key购买 nike

这是我正在关注的教程中的一个示例:

fn main() {
let name_length = NameLength::new("John");
name_length.print();
}

struct NameLength {
name: String,
length: usize,
}

impl NameLength {
fn new(name: &str) -> Self {
NameLength {
name.to_string(),
length: name.len(),
}
}

fn print(&self) {
println!(
"The name '{}' is '{}' characters long",
self.name, self.length
);
}
}
我收到一个错误:
error: expected one of `,` or `}`, found `.`
--> src/main.rs:14:17
|
13 | NameLength {
| ---------- while parsing this struct
14 | name.to_string(),
| ^ expected one of `,` or `}`

error[E0063]: missing field `name` in initializer of `NameLength`
--> src/main.rs:13:9
|
13 | NameLength {
| ^^^^^^^^^^ missing `name`
我尝试通过以下方式创建构造函数:
fn new(name: &str) -> Self {
NameLength {
name,
length: name.len(),
}
}
我仍然收到错误消息:
error[E0308]: mismatched types
--> src/main.rs:14:13
|
14 | name,
| ^^^^
| |
| expected struct `std::string::String`, found `&str`
| help: try using a conversion method: `name: name.to_string()`

最佳答案

您的new方法必须为

fn new(name: &str) -> Self {
NameLength {
name: name.to_string(),
length: name.len(),
}
}
在您的第一次尝试中,仅使用 name.to_string(),Rust不知道您试图将其设置为哪个struct成员。在第二次尝试中,只是 namename&str,而不是 String,因为您摆脱了 .to_string()调用。

关于rust - 打印结构的值-出现错误,可能是 `,`或 `}`之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62684305/

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