8

为了方便调用者,我想编写一个接受任何类型的字符串(&str/ )的通用函数。String

该函数内部需要 a String,因此如果调用者使用String.

foo("borrowed");
foo(format!("owned"));

为了接受我知道我可以使用foo<S: AsRef<str>>(s: S)的引用,但是另一种方式呢?

我认为基于的通用参数ToOwned可能有效(适用于&str,并且我假设它对 没有操作String),但我无法弄清楚确切的语法。

4

1 回答 1

12

我认为你所追求的可以通过Intotrait来实现,如下所示:

fn foo<S: Into<String>>(s: S) -> String {
    return s.into();
}

fn main () {
    foo("borrowed");
    foo(format!("owned"));
}
于 2017-08-06T19:38:34.787 回答