I want to write a single function, that accepts a &str
, a String
and a borrowed &String
. I\'ve written the following 2 functions:<
You can use the AsRef<str> trait:
// will accept any object that implements AsRef<str>
fn print<S: AsRef<str>>(stringlike: S) {
// call as_ref() to get a &str
let str_ref = stringlike.as_ref();
println!("got: {:?}", str_ref)
}
fn main() {
let a: &str = "str";
let b: String = String::from("String");
let c: &String = &b;
print(a);
print(c);
print(b);
}
The print
function will support any type that implements AsRef<str>
, which includes &str
, String
and &String
.