Skip to content

Instantly share code, notes, and snippets.

@uta8a
Created July 3, 2019 19:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save uta8a/ef597f9aa8f11f56e183cf7172631e88 to your computer and use it in GitHub Desktop.
Save uta8a/ef597f9aa8f11f56e183cf7172631e88 to your computer and use it in GitHub Desktop.

20190703 今日の精進

Rustに慣れてなくて時間を溶かした。あまりできなかった。

mod, trait, impl

今日も少しイメージが進んだ

  • mod: ここを使うと、グローバルに定数を置かないで、名前空間下に定数がおける(とても嬉しい)よく考えたらこれはstd::u64::MAXみたいなやつだな
mod vig {  
  pub const MAX_N = 1000;  
}  
fn main(){  
  println!("{}", vig::MAX_N);  
}  
  • trait: 公式を見ると、型に対して関数を実装するのがimplで、その前にその関数の振る舞い(型シグネチャ)を定義できるのが嬉しいっぽい。でも嬉しさはシグネチャを理解しないと難しそう。
  • impl: 自分で作った型に対して関数を実装するときに使う。
  • std::u64::MAXについて、ソースコードを見ると、型に対するマクロのようになっている。そこでu64を調べるとこれはimplであることが分かる。現時点ではimplではなくvig直下に定数を書いているけど、そのうちvig::N::MAX_Nみたいにしたい。
  • とりあえずデフォルトのprivateにしておいて、インターフェースとなる関数をpubにしてあげればきれいになることを学んだ。

  • 進める。fibonacciに対する調査はまた今度。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment