2
我一直在修補Rust,我對函數返回類型有點困惑。作爲一個實驗,我正在編寫一個IRC日誌解析器。我熟悉原始類型,並使函數返回這些類型。返回多個數據時更復雜的類型怎麼辦?如何返回一個結構體或比原始體更復雜的東西?
/* Log line example from log.txt */
/* [17:35] <@botname> name1 [460/702] has challenged name2 [224/739] and taken them in combat! */
#[derive(Show)]
struct Challenger {
challenger: String,
defender: String
}
fn main() {
let path = Path::new("log.txt");
let mut file = BufferedReader::new(File::open(&path));
for line in file.lines() {
let mut unwrapped_line = line.unwrap();
let mut chal = challenges3(unwrapped_line);
println!("Challenger: {}", chal.challenger);
println!("Defender: {}", chal.defender);
}
}
fn challenges3(text: String)-> Challenger {
let s: String = text;
let split: Vec<&str> = s.as_slice().split(' ').collect();
if(split[4] == "has" && split[5] == "challenged") {
let mychallenger = Challenger { challenger: split[2].to_string(), defender: split[6].to_string()};
return mychallenger;
}
}
我意識到這個代碼不是很習慣,我對語言很熟悉。
我得到一個錯誤與此代碼:
"mismatched types: expected `Challenger`, found `()` (expected struct Challenger, found())"
我怎樣才能返回一個結構或一個HashMap?有沒有更好的方法來返回多個數據字段?
非常感謝!這有助於在此過程中清除一些事情。我相信我會在未來有更多的問題:) – Antiartificial