The Rust team is happy to announce the latest version of Rust, 1.9. Rust is a systems programming language focused on safety, speed, and concurrency. As always, you can install Rust 1.9 from the appropriate page on our website, and check out the detailed release notes for 1.9 on GitHub. About 1000 patches were landed in this release. What's in 1.9 stable Controlled unwinding The biggest shift in R
気が向いたので Rust でも書いてみるかという感じになって書いてるんですが、TCP Echo サーバーを書くだけで躓いたのでメモ。 fn main() { use std::io::prelude::*; use std::net::{TcpListener, TcpStream}; use std::thread; let listener = TcpListener::bind("127.0.0.1:8124").unwrap(); fn handle_client(mut stream: TcpStream) { std::io::copy(&mut stream.try_clone().unwrap(), &mut stream); } // accept connections and process them, spawning a new thread for each o
Rust はガベージコレクタを持たない言語だ。コンパイル時に、構造体などのオブジェクトの所有権と生存状態(ライフタイム)を分析することで、オブジェクトを適切なタイミングでメモリから削除する仕組みになっている。この仕組みはとても良くできているが、時々、削除のタイミングを開発者が自分で制御したいこともある。 特にそれが必要になるのが、FFI(他言語関数インターフェイス)経由で、Rust のオブジェクトを他の言語に渡したい時だろう。この場合、他言語にはオブジェクトへのポインタを渡すことになるが、ライフタイムの分析をコンパイラに任せると、Rust の関数を抜けた時にオブジェクトの寿命が尽きたと判断されて、削除されてしまうことがある。これが起こると、他言語に渡したポインタは、参照先のオブジェクトが存在しない状態、いわゆる「ダングリングポインタ」になってしまう。 この記事では簡単な例を使って、ダングリ
The Box<T> type for heap allocation. Box<T>, casually referred to as a ‘box’, provides the simplest form of heap allocation in Rust. Boxes provide ownership for this allocation, and drop their contents when they go out of scope. Boxes also ensure that they never allocate more than isize::MAX bytes. §Examples Move a value from the stack to the heap by creating a Box:
前回、簡単な高階関数hogeを書きましたが、もう少しだけ分かったことがあるのでまたメモとして残しておきます。 kudohamu.hatenablog.com 今回は高階関数というよりはRustのクロージャについてです。 ※ バーション1.3.0です。Rustは結構頻繁に破壊的な変更が起きるようなので将来ここに書いてある内容は通らない可能性あり。 前回できたもの 前回は以下のように「"ほげー!"という文字列を返す関数」を返す関数hogeを作成しました。 fn main() { println!("{}", hoge()()); } fn hoge() -> Box<Fn() -> String> { Box::new(|| -> String { String::from("ほげー!") }) } ただ、高階関数を作る時は大抵返り値となる関数の中でゴニョゴニョしたいものです。 返り値の関数に
これは Rust Language Advent Calendar 2014 の2日目の記事です。前日は @saneyuki_s さんの『Rustプログラミングにおけるデバッグ入門』でした。 今日はlifetimeとownershipの話です。「なんだそれは」と思った方も、「またか」と思った方も、「Rust使ってるからよく知ってるよ」と思った方も少しの間お付き合いください。 はじめに ブラウザの会社が公開したRustというプログラミング言語があります。ブラウザの会社が公開した言語なので、Rustで書かれたブラウザもあります。このプログラミング言語の特徴の一つがlifetimeとownershipです。 例えば、Rustの30分イントロダクションは少し前に書き直されるまではlifetimeとownershipを中心に解説していました。関数型言語に慣れ親しんだ人のために書かれた別のRustイン
RustとHTTP Module std::net というのがありますが、これはプリミティブなTCP/UDP通信を提供するものなので、これをそのまま使ってHTTPを扱うのは少し大変です。 Are we web yet? Getting there を読んで、今回はIronというフレームワークを使ってみました。 バージョンは以下のとおりです。 rust: 1.0.0 (a59de37e9 2015-05-13) (built 2015-05-14) iron: 0.1.17 Iron Iron はミドルウェア指向で拡張性の高いHTTPサーバーのフレームワークです。Iron自体のソースコードは小さく、これに必要なミドルウェアやプラグインを足すスタイルになっています。 コアとなるモジュールはあらかじめバンドルされています。 Middleware: Routing Mounting Static
The Piston team would like to announce release of Visual Rust 0.1 Visual Rust is Visual Studio extension for Rust language. This release adds Rust editor and support for creating, building and running Rust projects. It’s an early version, but we hope you will enjoy using it! Download it from here. Suggest new features and report problems on our issue tracker.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く