За Steve Klabnik's writeup in the pre-Rust 1.0 documentation on the difference between String
and &str
, в Rust вы должны использовать &str
, если вам действительно не требуется владение над String
. Точно так же рекомендуется использовать ссылки на срезы (&[]
) вместо Vec
с, если вам не требуется владение над Vec
.Convert Vec <String> в ломтик & str в ржавчине?
У меня есть Vec<String>
, и я хочу, чтобы написать функцию, которая использует эту последовательность строк и она не нуждается в собственности на Vec
или String
случаях, следует, что функция принимать &[&str]
? Если да, то как лучше всего ссылаться на Vec<String>
на &[&str]
? Или это избыточное принуждение?
Я думаю, что это ответ, который ищет OP, поскольку он позволяет использовать срез без лишнего выделения. Этот подход еще более полезен при принятии фрагмента 'AsRef' - вы хотите, чтобы функция принимала все '& [& str]', '& [String]', '& [Path]' и '& [PathBuf ] ', не выделяя новую память. –
user4815162342