コンパイルしてるから
関数じゃなくてマクロを呼び出しているらしい
パッケージマネージャ
mutableを示す修飾子。Rustの変数はデフォルトでimmutable.
::修飾子でstatic methodにアクセスしてる
&で参照渡ししてる。参照もデフォルトimmutableだからmutつけないとだめ。
Rustコードのパッケージ
semverで指定された依存パッケージが更新されてもプロジェクト側で使うパッケージが勝手に更新されないようにできる。
ある型が提供しなければならない機能をコンパイラに伝える言語機能。
トレイトを記述するための構文。 型パラメータのふるまいを定義するだけでなく、既存の型に制約を課すような書き方ができる。
trait ConvertTo<Output> {
fn convert(&self) -> Output;
}
impl ConvertTo<i64> for i32 {
fn convert(&self) -> i64 { *self as i64 }
}
// T == i32の時に呼び出せる
fn normal<T: ConvertTo<i64>>(x: &T) -> i64 {
x.convert()
}
// T == i64の時に呼び出せる
fn inverse<T>() -> T
// これは「ConvertTo<i64>」であるかのようにConvertToを用いている
where i32: ConvertTo<T> {
42.convert()
}