プログラミングのお題スレ Part22 (859レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
676
(1): デフォルトの名無しさん [sage] 2025/03/15(土) 19:04:58.28 ID:GCbQqql0(1) AAS
>>673
673(1): デフォルトの名無しさん [sage] 2025/03/14(金) 02:30:00.58 ID:wjeVVi0w(2/2) AAS
>>670 Rust 逆文字列を生成しない&整数ジェネリック版
use num::{BigInt, CheckedAdd, CheckedMul, CheckedSub, FromPrimitive};

fn chars_to_integer<X>(input: impl Iterator<Item = char>) -> Option<X>
 where X: FromPrimitive + CheckedMul + CheckedAdd,
{
 let (zero, ten) = (X::from_u32(0).unwrap(), X::from_u32(10).unwrap());
 input
  .map(|c| X::from_u32(c.to_digit(10)?))
  .try_fold(zero, |acc, x| acc.checked_mul(&ten)?.checked_add(&x?))
}

fn odai<X>(input: &str) -> Option<X>
 where X: FromPrimitive + CheckedMul + CheckedAdd + CheckedSub,
{
 let x = chars_to_integer::<X>(input.chars())?;
 let y = chars_to_integer::<X>(input.chars().rev())?;
 x.checked_sub(&y)
}

fn main() {
 assert_eq!(odai::<i64>("12345"), Some(-41976));
 assert_eq!(odai::<BigInt>("4922235242952026704037113243122008064"), Some("314233029528909399960910650696685770".parse::<BigInt>().unwrap()));
}
これらのwhere~は何という名称ですか?

> where X: FromPrimitive + CheckedMul + CheckedAdd,
> where X: FromPrimitive + CheckedMul + CheckedAdd + CheckedSub,
681: デフォルトの名無しさん [sage] 2025/03/16(日) 23:59:39.36 ID:qWmLE6LP(1) AAS
>>676
where句だよ
型Xのトレイト境界を宣言してる
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.037s