let words = vec!["abc", "FOOBAR", "xyz"]; let case_insensitive_min = words.iter().min_by(|a, b| { let a_iter = a.chars().map(|c| c.to_ascii_lowercase()); let b_iter = b.chars().map(|c| c.to_ascii_lowercase()); a_iter.cmp(b_iter) }).unwrap(); (全体コード: Playground) 安直にやれば、 str::to_lowercase() で先に(こちらは ASCII に限らず)小文字に変換しきってから比較ということになるが、これだと文字列の生成、つまりメモリアロケーションがあるので無駄が多い。 そこで min_by を使えば、文字列を生成することなく、文
