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.