[過去ログ] Rust part24 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
941: 2024/07/23(火)23:07 ID:tKFzmUCx(1) AAS
ほとんどの言語でオブジェクトを返す時にヒープを使うから
RustでもBox<dyn>を使っても構わないけど
ライフタイムさえ満たしてやればヒープを使わずに&dynにできるよ

use std::fmt::Display;
type FizzBuzz<'a> = &'a dyn Display;

fn fizz_buzz_iter<'a, T: Display>(i: &'a[T], s: &'a[&str; 3]) -> impl Iterator<Item = FizzBuzz<'a>> {
 (1..).map_while(|int| match (int % 3, int % 5) {
  (0, 0) => Some(&s[0] as FizzBuzz),
  (0, _) => Some(&s[1]),
  (_, 0) => Some(&s[2]),
  (_, _) => i.get(int).map(|int| int as FizzBuzz),
 })
}

fn main() {
 let i: [_; 256] = std::array::from_fn(|i| i as u8);
 let s: [_; 3] = ["FizzBuzz", "Fizz", "Buzz"];
 for x in fizz_buzz_iter(&i, &s).take(30) {
  println!("{x}");
 }
}
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.039s