Chcę sprawdzić, czy ciąg rozpoczyna niektórych znaków:Jaki jest poprawny i idiomatyczny sposób sprawdzenia, czy ciąg zaczyna się od określonej postaci w Rust?
for line in lines_of_text.split("\n").collect::<Vec<_>>().iter() {
let rendered = match line.char_at(0) {
'#' => {
// Heading
Cyan.paint(*line).to_string()
}
'>' => {
// Quotation
White.paint(*line).to_string()
}
'-' => {
// Inline list
Green.paint(*line).to_string()
}
'`' => {
// Code
White.paint(*line).to_string()
}
_ => (*line).to_string(),
};
println!("{:?}", rendered);
}
Użyłem char_at
, ale zgłasza błąd ze względu na jego niestabilność.
main.rs:49:29: 49:39 error: use of unstable library feature 'str_char': frequently replaced by the chars() iterator, this method may be removed or possibly renamed in the future; it is normally replaced by chars/char_indices iterators or by getting the first char from a subslice (see issue #27754)
main.rs:49 let rendered = match line.char_at(0) {
^~~~~~~~~~
obecnie używam Rust 1,5
Idealny. Dzięki! – rilut
Tak, pomyślałem, że zbieranie do wektora było również nieefektywne. Nie wiedziałem, że Split to ten sam iterator co iter. Czy mogę zapytać, który jest szybszy od twoich rozwiązań? A może ich prędkość jest mniej więcej taka sama? – rilut
@rilut możesz zapytać, ale nie znam odpowiedzi^_ ^. Może ktoś zadzwoni, ale możesz też przeprowadzić testy wydajności w swojej aplikacji i zobaczyć na pewno. Prawdopodobnie * zgadnę *, że wszystkie są takie same. – Shepmaster