BT

新しい あなたは、アーリーアダプター?それともイノベーター?そんな皆様に、InfoQの新機能をご案内しています。詳細はこちら

Rust 1.19におけるタグ無しのunionなどの追加

| 作者: Sergio De Simone フォローする 5 人のフォロワー , 翻訳者 笠原 王徳 フォローする 0 人のフォロワー 投稿日 2017年8月8日. 推定読書時間: 3 分 |

原文(投稿日:2017/07/24)へのリンク

Rust 1.19には数々の言語上の改善が導入されており、 これにはタグ無しのunionと新しい標準ライブラリ機能が含まれる。

Rustにおけるunionenumと同様のものであるが、タグ付けはされない。これは Rustにおけるunionの使用が本来的には安全でないことを示しており、unionの中のどのバリアントが実際に使用されているかを知る情報がないことに起因している。以下はRustのunionの定義方法及び使用方法である。

union MyUnion {
    f1: u32,
    f2: f32,
}

let u = MyUnion { f1: 1 };
unsafe { u.f1 = 5 };
let value = unsafe { u.f1 };

fn f(u: MyUnion) {
    unsafe {
        match u {
            MyUnion { f1: 10 } => { println!("ten"); }
            MyUnion { f2 } => { println!("{}", f2); }
        }
    }
}

unionを使用しているCのAPIとの接続を容易にするのに加え、Rustにおけるunionの導入は空間的に効率の良い構造の実装を単純化することを目的としている

Rust 1.19では、文の内部から値を返却するためのbreakと共に用いた場合に、loop 文が式として振る舞うことができるようになった。例えば以下のように使用する。

let x = loop { break 7; };

ライブラリの界面でも、先に述べたようにRust 1.19では数々の新機能が導入されている。第1に、2つの新しいマクロであるeprint!eprintln!があり、これにより標準出力の代わりに標準エラー出力に対して簡単に出力できるようになった。

他の新しいライブラリ機能は以下である。

RustのパッケージマネージャーであるCargoも少数ではあるが新機能を含んでいる。特に、crates.ioのインデックスをもうローカルのワーキングディレクトリにチェックアウトしなくなり、性能の改善とレジストリサイズの削減に寄与する。加えて、ビルドスクリプトはクレートをビルドするために使用する環境を修正できるようになった。--allを使用する際に、新しい--excludeオプションを用いて特定のパッケージを除外することができる。

すでにRustがインストールされているのであれば、以下を実行することで更新することができる。

rustup update stable

そうでなければ、最初に環境を構築するためにrustupを使用することができる。

より詳細な情報はリリースノートを参照のこと。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

特集コンテンツ一覧

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT