【发布时间】:2021-09-24 14:23:27
【问题描述】:
我希望能够像这样获取一个字符串并在其上调用一个方法:
let s = String::new();
s.clean()
我想我会把它作为字符串的一个特征来实现,所以开始写这个:
trait Clean {
fn clean(&mut self) -> Self {
return self.trim_start_matches("\"");
}
}
impl Clean for String {}
这至少有两个问题:
- 因为 self 可以是任何东西,所以不能保证它有
.trim_start_matches()方法 - 所以 Rust 不会编译。 - 查看
.trim_start_matches()的签名,我认为它不会发生突变,所以我认为将 .clean() 附加到末尾是行不通的(我必须创建一个新变量)
实现这个的正确方法是什么?
抱歉,如果之前有人问过这个问题,我不知道在搜索栏中输入什么来找到类似的答案。
【问题讨论】:
-
在你的情况下,我会做类似的事情play.rust-lang.org/… 我认为在 String 上实现一个干净的方法,它只在特定的上下文中生成并不清楚。
标签: rust