2015-06-29 2 views
4

У меня есть Vec<&str> и я хочу удалить префикс из всех его элементов. Это то, что я смутно намереваюсь:Изменение фрагмента str's

fn remove_prefix(v: &mut [&str], prefix: &str) { 
    for t in v.iter_mut() { 
     t = t.trim_left_matches(prefix); 
    } 
} 

Однако я не могу показаться, чтобы получить все mut «S в нужном месте. Или, может быть, это связанная с жизнью вещь? Может ли кто-нибудь дать мне подсказку? Вот моя текущая ошибка:

makefile_to_qbs.rs:22:7: 22:34 error: mismatched types: 
expected `&mut &str`, 
    found `&str` 
(values differ in mutability) [E0308] 
makefile_to_qbs.rs:22   t = t.trim_left_matches(prefix); 

ответ

5

t имеет тип &mut &str, изменяемый указатель на срез строки. Вы хотите изменить, к чему относятся переменные ориентиры, поэтому вам необходимо сохранить &str в *t.

fn remove_prefix(v: &mut [&str], prefix: &str) { 
    for t in v.iter_mut() { 
     *t = t.trim_left_matches(prefix); 
    } 
} 
+0

Aha Я был так близок, спасибо! – Timmmm

Смежные вопросы