Rust part13at TECH
Rust part13 - 暇つぶし2ch127:デフォルトの名無しさん
21/11/24 17:56:43.20 Zq3lnaBh.net
>>124の続き
あとは>>93に出てきた変なX型ですね
#[derive(Debug,Clone)]
struct X(String);
impl X {
 fn new(s: &str) -> Self {
  if !s.chars().all(|c| c == 'x') {
    panic!("not x");
  }
  X(s.to_string())
 }
}
と定義はそのまま使っておきます
あとはOneやAddの実装はをせずにIntegerCompatibleだけ実装
impl IntegerCompatible for X {
 type Integer = usize;
 fn into_integer(&self) -> Self::Integer {
  self.0.len()
 }
 fn from_integer(n: Self::Integer) -> Self {
  X::new(&std::iter::repeat("x").take(n).collect::<String>())
 }
}
このような特殊例のみIntegerCompatible実装のマクロ化は無理ですね
let v :Vec<X> = range(X::new("xxx"), X::new("xxxxxxx")).collect();
println!("{:?}", v); // [X("xxx"), X("xxxx"), X("xxxxx"), X("xxxxxx")]
当然ですがX型についても動きました


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch