Rust part16at TECHRust part16 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト9:デフォルトの名無しさん 22/06/27 21:57:27.41 TFU41qtv.net >>987 Stringを自己trimするtrim_in_place()を対称的に短く書くなら fn trim_in_place(s: &mut String, mut f: impl FnMut(char) -> bool) { if let Some(end) = s.rfind(|c| !f(c)) { let end = s.ceil_char_boundary(end + 1); s.truncate(end); } if let Some(start) = s.find(|c| !f(c)) { s.drain(..start); } } たとえわずかでも先にendを処理 fは char::is_whitespace など ただし目的外使用なので長くなるけど置き換え s.drain(..start); ↓ s.replace_range(..start, ""); こちらはunstableなので長くなるけど置き換え let end = s.ceil_char_boundary(end + 1); ↓ let end = ((end + 1)..).filter(|&i| s.is_char_boundary(i)).next().unwrap(); ここでendはrfind()で発見済なのでend + 1でunwrap()可能 10:デフォルトの名無しさん 22/06/28 06:27:19.73 BuyF3SOs.net drainとかsinkとかRustはわかりやすい絶妙なネーミングが多いな 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch