Ich möchte eine generische Funktion schreiben, die jede Art von String akzeptiert ( &str
/ String
), um den Aufrufer zu vereinfachen.
Die Funktion benötigt intern String
, also möchte ich auch unnötige Neuzuweisung vermeiden, wenn der Aufrufer die Funktion mit String
aufruft.
Zum Akzeptieren von Referenzen weiß ich, dass ich foo<S: AsRef<str>>(s: S)
verwenden kann, aber was ist mit dem anderen Weg?
Ich denke, generisches Argument basierend auf ToOwned
könnte funktionieren (funktioniert für &str
, und ich gehe davon aus, dass es keine Operation auf String
ist), aber ich kann die genaue Syntax nicht herausfinden.
Ich denke, was Sie wollen, kann mit dem Into
Merkmal erreicht werden , so:
Tags und Links generics rust ownership-semantics