Ich möchte überprüfen, ob eine Zeichenfolge mit einigen Zeichen beginnt:Was ist die korrekte und idiomatische Art zu prüfen, ob eine Zeichenfolge in Rust mit einem bestimmten Zeichen beginnt?
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);
}
ich char_at
verwendet habe, aber es meldet einen Fehler aufgrund seiner Instabilität.
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) {
^~~~~~~~~~
ich zur Zeit mit Rust 1,5
Perfekt. Vielen Dank! – rilut
Ja, ich dachte, das Sammeln zu Vektor war auch ineffizient. Ich wusste nicht, Split ist der gleiche Iterator wie iter. Darf ich fragen, was ist schneller von Ihren Lösungen? Oder ist ihre Geschwindigkeit ungefähr gleich? – rilut
@rilut können Sie fragen, aber ich kenne die Antwort nicht^_ ^. Vielleicht wird jemand hereinspielen, aber Sie könnten auch einige Leistungstests in Ihrer App durchführen und sicher sehen. Ich würde wahrscheinlich * raten *, dass sie alle gleich sind. – Shepmaster