type parameter method generic example generics rust ownership-semantics

parameter - kotlin generics example



Función genérica aceptando & str o moviendo String sin copiar (1)

Creo que lo que estás buscando se puede lograr con el rasgo Into , así:

fn foo<S: Into<String>>(s: S) -> String { return s.into(); } fn main () { foo("borrowed"); foo(format!("owned")); }

Quiero escribir una función genérica que acepte cualquier tipo de cadena ( &str / String ) para la conveniencia de la persona que llama.

La función internamente necesita una String , por lo que también me gustaría evitar la reasignación innecesaria si la persona que llama llama a la función con String .

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

Para aceptar referencias sé que puedo usar foo<S: AsRef<str>>(s: S) , pero ¿qué pasa con la otra?

Creo que el argumento genérico basado en ToOwned podría funcionar (funciona para &str , y ToOwned que es una ToOwned no ToOwned en String ), pero no puedo descifrar la sintaxis exacta.