Kor*_*nel 8 generics ownership-semantics rust
我想编写一个通用函数,它接受任何类型的字符串(&str/ String)以方便调用者.
函数内部需要a String,所以如果调用者调用函数,我也想避免不必要的重新分配String.
foo("borrowed");
foo(format!("owned"));
Run Code Online (Sandbox Code Playgroud)
接受参考我知道我可以使用foo<S: AsRef<str>>(s: S),但另一种方式呢?
我认为基于的泛型参数ToOwned可能有用(适用于&str,我假设它是无操作String),但我无法弄清楚确切的语法.
Flo*_*mer 10
我认为你所追求的是可以用这个Into特性实现的,就像这样:
fn foo<S: Into<String>>(s: S) -> String {
return s.into();
}
fn main () {
foo("borrowed");
foo(format!("owned"));
}
Run Code Online (Sandbox Code Playgroud)