Rust 1.20には、関連定数、ライブラリの安定化、Cargoのクレデンシャル隠蔽改善などが含まれている。
Rust 1.20では、トレイト、構造体、列挙型に関連した定数を定義できる。たとえば、次のスニペットは、特定のインスタンスに関連しないID
定数を定義しており、Struct::ID
として使うことができる。
struct Struct;
impl Struct {
const ID: u32 = 0;
}
トレイトの関連定数を定義するとき、その値を定義する必要はなく、具体的なトレイトの実装で行うことができる。
trait Trait {
const ID: u32;
}
struct Struct;
impl Trait for Struct {
const ID: u32 = 5;
}
加えて、Rust 1.20では、マクロに影響を及ぼす多数のバグが修正されている。具体的にあげると、トークンがフラグメント指定子にマッチ可能か予測しようとしていたところだ。structs
内の型変換の改善、LLVM WebAssemblyバックエンドの有効化、エラーメッセージの改善など、Rustコンパイラも改善されている。
標準ライブラリには、多数の改善と安定化がなされている。
unimplemented!
マクロに参考となるメッセージを指定できるようになる。min
とmax
がRustで書き直された。- スタックプローブの提供により、ランタイム保証が改善された。これはスタックオーバーフローをうっかり無視する代わりに、セグメンテーションフォルトを引き起こす。カーネルの脆弱性を修正するために導入されたLinuxのスタックガードとの統合が改善された。
slice::sort_unstable_by_key
、slice::sort_unstable_by
、slice::sort_unstable
により、不安定なソート関数が使えるようになった。不安定なソートとは、複数回ソートした時に、同値の要素が常に同じ順番になることを保証しないソートのことで、通常、コードはより高速に簡単になる。
最後に、RustのパッケージマネージャCargoは、crates.io
認証トークンを~/.cargo/credentials
という別ファイルに保存するようになった。これにより、他のユーザーのアクセスからトークンを適切に保護することができる。
Rust 1.20の新機能の詳細を知りたければ、必ずリリースノートに目を通そう。
Rate this Article
- Editor Review
- Chief Editor Action