3
我試圖解析其具有類似於此格式的特定字符串:消耗串的部分,而遍歷它
prefix,body1:body2
我想用.chars
法和其他方法,如.take_while
等這樣的:
let chars = str.chars();
let prefix: String = chars.take_while(|&c| c != ',').collect();
let body1: String = chars.take_while(|&c| c != ':').collect();
let body2: String = chars.take_while(|_| true).collect();
但是編譯器會抱怨:
error: use of moved value: `chars` [E0382]
let body1: String = chars.take_while(|&c| c != ':').collect();
^~~~~
help: see the detailed explanation for E0382
note: `chars` moved here because it has type `core::str::Chars<'_>`, which is non-copyable
let prefix: String = chars.take_while(|&c| c != ',').collect();
^~~~~
我可以將其重寫爲一個普通的for
循環並累加值,但這是我想避免的。
不錯!但個人而言,我總是會忘記有像'by_ref','as_mut'等方法可以完成Rust魔法。 – franza
@franza,'take_while(| _ | true)'是不必要的,你可以直接調用'collect()'。 –