gpt4 book ai didi

rust - 如何匹配 Rust 中的 &'static str

转载 作者:行者123 更新时间:2023-11-29 07:56:28 30 4
gpt4 key购买 nike

我是 Rust 初学者,我无法解决此类问题。我尝试用 name 替换 &name,但出现错误“pattern &_ not covered”。

fn get_project(name: &'static str) {
match &name {
"hi" => {},
}
}

fn main() {
let project = get_project("hi");
}

编译器错误:

error[E0308]: mismatched types
--> <anon>:3:9
|
3 | "hi" => {},
| ^^^^ expected &str, found str
|
= note: expected type `&&str`
= note: found type `&'static str`

最佳答案

字符串文字——比如“hi”——具有&'static str类型。所以如果你已经有一个&str,你不需要添加&:

fn get_project(name: &str) {
match name {
"hi" => {},
_ => {}, // matches have to be exhaustive
}
}

我还添加了一个默认情况,因为 Rust 中的匹配需要详尽无遗:它们需要涵盖所有可能的情况。


也许您注意到了,我还从参数列表中删除了 'static。如果您想阅读一些关于一生的东西,请继续。否则,请停止阅读此处,因为它可能会造成混淆并且在这种情况下并不那么重要。

在此函数中,无需将给定参数的生命周期限制为'static。也许您还想传入从 String 中借用的字符串切片:

let user_input = read_user_input();  // type `String`
get_project(&input);

只有当您从参数中删除 'static 时,上面的代码才有效。删除后,该函数等效于:

fn get_project<'a>(name: &'a str) { ... }

这意味着该函数在整个生命周期内都是通用的 'a。该函数说:给定任何生命周期'a,你可以给我一个带有所述生命周期的字符串,我就可以做我的事了。这是真的。如果函数在任何生命周期内都无法执行此操作,编译器会提示 ;-)

关于rust - 如何匹配 Rust 中的 &'static str,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41275548/

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