κeenです。最近Futureと一口にいってもいくつか種類があるなと気付いたのでRustのfutures-rsに実装されているFutureの挙動を紐解こうと思います。 イベント駆動IO TCPサーバをノンブロッキングに書こうとすると、思いの他大変です。 ブロックせずにIOできるタイミングまで処理を溜めておいて、できるときに読み書きします。ブロックしないタイミングをみつけるのも一苦労なので大抵ライブラリに頼ってライブラリからイベントを通知してもらいます。Rustにはmioというライブラリがあります。 さて、これイベントの発見は書かなくてよくなりましたが、まだつらいです。リクエストがないのにレスポンスを返せる訳もないので処理とイベントに依存関係があって、「read readyイベントでデータを読み取って、足りれば処理開始、足りなければまだ読み取る。処理が終わればwrite readyイベントを
Oct 11, 2015 The identity function looks like this in Rust: /// The identity function. fn id<T>(x: T) -> T { x } id returns the same value that is passed in: assert_eq!(1, id(1)); Beyond the obvious, it does some curious and fun things! You can test this blog post’s code in the Rust Playground. id Type Hints or Coerces let string = "hi".to_string(); // Coerce a &String to &str, with id: match id::
You should always be using to_owned(). to_string() is the generic conversion to a String from any type implementing the ToString trait. It uses the formatting functions and therefor might end up doing multiple allocations and running much more code than a simple to_owned() which just allocates a buffer and copies the literal into the buffer.
The Rust team is happy to announce the latest version of Rust, 1.15.0. Rust is a systems programming language focused on safety, speed, and concurrency. If you have a previous version of Rust installed, getting Rust 1.15 is as easy as: $ rustup update stable If you don't have it already, you can get rustup from the appropriate page on our website, and check out the detailed release notes for 1.15.
Marwes/combine: A parser combinator library for Rust Parsecに影響を受けて作られたパーサコンビネータだそうです。 Rustでパーサコンビネータといえばnomといった風潮ですが、combineはトレイトを中心にしたRustらしい実装であり、マクロでパーサを記述するnomと違ってRustのシンタックスで書けます。 この記事では設定ファイル記述言語であるTOMLで定義されているリテラル数値・文字列の文法を例にパーサを書いてみます。 なお、以下のようなものを自力で実装する必要はあまり無くて、言語実装に必要なパーサはcombine-languageというクレートでもっと網羅的に提供されています。 Parserトレイト combineでは、パーサはParserトレイトを実装した型として表され、コンビネータでParserを組み合わせていくことで大
Box Syntax and Patterns Currently the only stable way to create a Box is via the Box::new method. Also it is not possible in stable Rust to destructure a Box in a match pattern. The unstable box keyword can be used to both create and destructure a Box . An example usage would be: # ! [ feature ( box_syntax , box_patterns )] fn main () { let b = Some ( box 5 ); match b { Some ( box n ) if n < 0 =>
κeenです。ここのところRustの開発ツール回りでリリースが続いてセットアップが楽になってるようだったので最新の情報をお届けします。 とりあえず私は既存の環境があるので一旦全て破棄してから再度セットアップしてみます。 Rustのインストール rustup.rs - The Rust toolchain installerがリリースされたので以下で一発です。 $ curl https://sh.rustup.rs -sSf | sh そして をシェルのrcファイルに書き加えたらOKです。 今のシェルにも反映するには同じく上記のコマンドを打ちます。 周辺ツールのインストール cargoがあるので楽ですね # コードフォーマッタ $ cargo install rustfmt # 補完、定義ジャンプなど $ cargo install racer まあまあ時間がかかります。 エディタ(Emac
▾ src/ # ソースファイル lib.rs # ライブラリ用のエントリ・ポイント hello.rs world.rs ▾ bin/ # (オプション) 追加の実行可能形式 hello.rs world.rs ▾ examples/ # (オプション) 使用例 hello_world.rs ▾ tests/ # (オプション) 統合テスト hello_world.rs ▾ benches/ # (オプション) ベンチマーク hello.rs world.rs src直下は見たままなので特にいうことはありません。 オプションになっているディレクトリが本題です。 src/bin:追加の実行可能形式 バイナリ用のプロジェクトの場合、デフォルトではプロジェクト名と同じ名前のバイナリがsrc/main.rsをエントリ・ポイントとして生成されます。 もし1プロジェクトで複数のバイナリを生成したい場合
Getting Started Getting started with nickel.rs is extremely easy. This guide will walk you through the steps necessary to write your first nickel app. 1. Get a recent version of Rust and Cargo In order to write a nickel app, you first need to make sure to have a recent version of Rust and Cargo. In case you are wondering Cargo is the package manager for Rust. It makes dependency and builds managem
The Rust team is happy to announce the latest version of Rust, 1.13.0. Rust is a systems programming language focused on safety, speed, and concurrency. As always, you can install Rust 1.13.0 from the appropriate page on our website, and check out the detailed release notes for 1.13.0 on GitHub. 1448 patches were landed in this release. It's been a busy season in Rust. We enjoyed three Rust confer
はじめに 以前「RustのLinux/Windows/OS X向けバイナリをCIで生成する」という記事を書いたのですが半年たって情報が古くなってしまったので更新します。 また、前回記事を書いた後に気づいたのですが、rust-everywhereというのもあるようです。こちらもCIでRustのバイナリ生成するテンプレートになっていて、ARMとかもサポートしているようです。 変更点 前回からの変更点は以下の2点です。 rustup.rsの使用 muslターゲットに変更 rustup.rsは現在のRustのデフォルトのセットアップツール兼ツールチェーン管理ツールです。以前のrustup.shやmultirustは非推奨になったようなので皆さん乗り換えましょう。 rustup.rsではクロスコンパイル用のターゲット追加が簡単にできるようになっているのでCI用のスクリプトがだいぶ簡素化されました。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く