【发布时间】:2021-06-22 07:51:44
【问题描述】:
我正在尝试理解 Rust 中的泛型。我无法理解这里出了什么问题
fn say<T>(msg: &T) {
let slen = msg.chars().count();
if slen > 0 {
println!("Char Count {} " ,slen);
}
}
fn main() {
let msg = String::from("Hello World from Rust!!!");
say::<String>(&msg);
}
编译错误:
error[E0599]: no method named `chars` found for reference `&T` in the current scope
--> hell.rs:4:20
|
4 | let slen = msg.chars().count();
| ^^^^^ method not found in `&T`
【问题讨论】:
-
say<T>表示“对于任何T,此方法都可以使用。”不保证任意类型都有chars方法,所以泛型在这里不起作用。 -
非常感谢您的回复。如何使这项工作。在调用函数时也没有提示
无济于事? -
如果您的泛型仅适用于特定类型,那么它将不起作用。只是不要使用泛型,而是使用
&str。