例: Vec の実装
全てをまとめるために、最初から std::Vec
を書くことにします。
アンセーフなコードを書くための最良のツールは全部アンステーブルなため、
このプロジェクトは nightly でしか動作しません (Rust 1.9.0 現在) 。
アロケータの API を除いて、使用するアンステーブルなもののほとんどは、
今日の形態に似た状態で、安定版となると予測しています。
しかし、なるべくアンステーブルなコードを書くことを避けようと思います。
特に、いかなる intrinsic も使わないことにします。これらはコードを
ちょっと改善したり、効率を良くします。これらを使わない理由は、
intrinsic が永遠にアンステーブルだからです。もっとも、多くの intrinsic は実際に
別の場において安定版になっていますが (std::ptr
や std::mem
は、
多くの intrinsic を含んでいます) 。
究極には、これは、ここで実装する Vec では可能な最適化を全部は 利用しないということを意味します。だからといって、全く単純という訳ではありません。 その問題によって何か本当に利益を得ることがないとしても、基本的で 細かいところに突っ込んでいきます。
先に進みたいですよね? それでは行きましょう。