У меня есть массив фиксированного размера в Rust [String; 2]
, и я хочу превратить его в (String, String)
. Могу ли я сделать это без копирования значений?Перемещение значений из массива в кортеж
Кусок кода, который я работаю, в частности, следующие:
let (basis, names_0, names_1) = if let Some(names) = self.arg_name {
(ComparisonBasis::Name, names[0], names[1])
} else {
(ComparisonBasis::File, self.arg_file[0], self.arg_file[1])
};
типов:
self.arg_name: Option<[String; 2]>
self.arg_file: Vec<String>
Сейчас я получаю ошибки
cannot move out of type `[std::string::String; 2]`, a non-copy fixed-size array [E0508]
и
cannot move out of indexed content [E0507]
для двух рукавов if
В конце концов, я думаю, это немного переусердствует, чтобы попытаться оптимизировать вызовы клонировать. Кусок кода в вопросе называется ровно один раз для запуска программы, и это всего две (возможно небольшие) строки. – Apanatshka