for line in r.lines() { let line = expect!(line); letmut s = line.split(' '); // not using split_whitespace because we might have empty fields
let fs_spec = unmangle_octal(expect!(s.next())); let fs_file = unmangle_octal(expect!(s.next())); let fs_vfstype = unmangle_octal(expect!(s.next())); let fs_mntops = unmangle_octal(expect!(s.next())); let fs_mntops: HashMap<String, Option<String>> = fs_mntops
.split(',')
.map(|s| { letmut split = s.splitn(2, '='); let k = split.next().unwrap().to_string(); // can not fail, splitn will always return at least 1 element let v = split.next().map(|s| s.to_string());
(k, v)
})
.collect(); let fs_freq = expect!(u8::from_str(expect!(s.next()))); let fs_passno = expect!(u8::from_str(expect!(s.next())));
for (octal, c) in [(r"\011", "\t"), (r"\012", "\n"), (r"\134", "\\"), (r"\043", "#")] {
input = input.replace(octal, c);
}
input
}
#[test] fn test_unmangle_octal() { let tests = [
(r"a\134b\011c\012d\043e", "a\\b\tc\nd#e"), // all escaped chars with abcde in between
(r"abcd", r"abcd"), // do nothing
];
for (input, expected) in tests {
assert_eq!(unmangle_octal(input), expected);
}
}
#[test] fn test_mounts() { usecrate::FromBufRead; use std::io::Cursor;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.