Rust APIガイドライン (非公式日本語訳) これはプログラミング言語RustのためのAPIデザイン上の推奨事項をまとめたものです。 大部分は、Rustエコシステム内の標準・非標準ライブラリを構築してきた経験を元に、 Rustのライブラリーチームによって執筆されました。 これはあくまで指針です。 項目ごとの充実度には差があり、今後の加筆修正が必要となっている曖昧な部分もあります。 Rustのクレート開発者は、ここから使えそうな内容を選び取り、 イディオマティックで相互運用性の高いライブラリを開発する上での重要な検討事項とするべきです。 また、このガイドラインは義務的に従わなければならない基準とされるべきではなく、 あくまで従わない場合に比べエコシステム内の他のクレートとのより良い相互運用が達成できるような 物となっています。 このブックはチェックリストと各項目の説明に分かれています。
Pythonの利点 対話的にデータの加工、解析、可視化 on Jupyter グルー言語的用法 公式・非公式によってPythonインターフェースはだいたい用意されている pip/wheel、あるいはanacondaによる環境構築の容易さ Pythonの問題点 Python自体の動作が低速 高速化の取り組み Cython コンパイルできるPythonに近いDSLを定義してコンパイルして実行する Numba PythonのコードをLLVMにコンパイルして実行する Theano Python上で埋め込みDSLによって計算を構築して、それを高速なバックエンドで実行する FFI 既に存在する高速に動作するライブラリ(C/Fortran)を呼び出す Pythonの拡張とNumPyの拡張 Python C-API (CPython拡張) http://docs.python.jp/3/c-api/ Cで
C++からRustに入った人あたりから「関数型言語から来た人のRustの感想を知りたい」とたまに言われるのでいつかブログ書こうか。 — κeen (@blackenedgold) 2017年4月3日 イントロ 私はRustをやる前にはCommon LispやSMLを主に使っていましたが、仕事ではScalaを使っていましたし他にもOCamlやSchemeやClojureやATS2やHaskellなどを書くこともありました。 私を含めた多くの関数型言語経験者人が一度は Rust for functional programmers を読んだことがあるかと思います。 このように関数型言語と比較して書かれるといかにも似た言語に見えるので私は興味を持ちました。そこで私は実際にRustに触れ始めたのです。 構文 let があるのでおよそOCamlなどに似ているという印象を受けました。 デフォルトでイミ
At Mozilla, security is one of our highest priorities, as the openness and accessibility of the Internet are threatened when user safety and privacy is not protected. Seven years ago we began sponsoring the development of the Rust programming language, with the vision of building a systems programming language that emphasizes security, speed, and parallelism. Parallelism means that multiple CPU co
Overview Developer Profile I. Geography II. Developer Roles III. Experience IV. Demographics V. Education Technology I. Most Popular Technologies II. Most Loved, Dreaded, and Wanted III. Technologies and Occupations IV. Top Paying Technologies V. Correlated Technologies Work I. Employment II. Company Type III. Career Satisfaction IV. Looking for a Job V. Job Discovery VI. Job Priorities VII. Diver
An object providing access to an open file on the filesystem. An instance of a File can be read and/or written depending on what options it was opened with. Files also implement Seek to alter the logical cursor that the file contains internally. Files are automatically closed when they go out of scope. Errors detected on closing are ignored by the implementation of Drop. Use the method sync_all if
この記事はjupyter notebook Advent Calender 2016 21日目の記事です。 はじめに 近頃、君の名は。とRustにはまっています。(君の名は。は本記事には1ミリも関係がありません。) Rustは最近始めたのですが、かなり面白いです。 勉強していく中で思ったこととかをNotebookとして残していけたらいいな、と思いましたが 残念ながらRust言語のKernelは見つかりません。 ということで、Rust用のJupyter Kernelを作成してみました。 やったこと 以下2つの作業をすると新しいKernelが使えるようになるようです。 1.Kernelの作成 2.Kernelspecへの追加 1.Kernelの作成 公式のMaking kernels for Jupyterを見ると、以下の様にあります。 There are two options for wr
シルバーウィークの進捗が芳しくなかったので雑な記事書いてお茶を濁しとく。rustをそれなりに(といっても1000行くらい)書いて溜まった知見をとりあえず出す。rust1.3時点。 最初の方で熱く語ってるが多くの人にとって欲しい情報は下の方にあると思う。 どんな言語 公式から持ってくるとこんな感じ。 zero-cost abstractions C++くらいの性能と思えばいい。 move semantics 他にはない難しい概念。しかしこれのおかげで様々な機能を教授出来る。 guaranteed memory safety move semanticsにより安全でない操作はコンパイル時に弾ける。 threads without data races move semanticsその他により安全でない操作は(ry trait-based generics 継承ベースとは違って開いている。型を定
背景 Visual Studio Code(vscode)でRustコードを書く際、選択肢としてあるのが vscode-rust だったが、最近はあんまり実装に時間取れないからrls-vscode使ってね(意訳)という事なので、そちらを使うことにする。 注意 RLSは2017/12月現在まだα開発段階なので、仕様が変わる場合や、致命的なエラーが出る場合もあるので注意。 何かあったら、rustup update nightlyで取得できる最新版で直るのを待つか、ソースから何とかするしかない。 Rust Language Server(RLS)とは 言語開発をする上で、IDEやエディタに補完機能、構文解析等の機能を統一的に提供するために定められた language server protocol のRustのための実装。 公式リポジトリは https://github.com/rust-lan
スタックとヒープ システム言語として、Rustは低レベルでの作業を行います。 もしあなたが高レベルの言語出身であれば、あなたがあまり慣れていないかもしれないシステムプログラミングの側面がいくつかあります。 最も重要なことは、スタックとヒープを使って、メモリーがどのように動作するのかということです。 もしあなたがC系の言語によるスタック割当ての使い方に慣れているのであれば、この章は復習になるでしょう。 もし慣れていないのであれば、Rust的な視点からではありますが、このことについて一般的な概念を学ぶことができるでしょう。 メモリー管理 これら2つの用語はメモリー管理についてのものです。 スタックとヒープは、あなたがメモリーの割当てと解放をいつ行うかを決めるための手助けとなる抽象です。 以下は高レベルでの比較です。 スタックは非常に速く、Rustにおいてはデフォルトでメモリーを割り当てる場所で
pub struct Vec<T, A = Global>where A: Allocator,{ /* private fields */ }Expand description A contiguous growable array type, written as Vec<T>, short for ‘vector’. Examples let mut vec = Vec::new(); vec.push(1); vec.push(2); assert_eq!(vec.len(), 2); assert_eq!(vec[0], 1); assert_eq!(vec.pop(), Some(2)); assert_eq!(vec.len(), 1); vec[0] = 7; assert_eq!(vec[0], 7); vec.extend([1, 2, 3]); for x in &
Composable external iteration. If you’ve found yourself with a collection of some kind, and needed to perform an operation on the elements of said collection, you’ll quickly run into ‘iterators’. Iterators are heavily used in idiomatic Rust code, so it’s worth becoming familiar with them. Before explaining more, let’s talk about how this module is structured: Organization This module is largely or
pub trait Iterator { type Item; Show 76 methods // Required method fn next(&mut self) -> Option<Self::Item>; // Provided methods fn next_chunk<const N: usize>( &mut self ) -> Result<[Self::Item; N], IntoIter<Self::Item, N>> where Self: Sized { ... } fn size_hint(&self) -> (usize, Option<usize>) { ... } fn count(self) -> usize where Self: Sized { ... } fn last(self) -> Option<Self::Item> where Self
This blog is where I post up various half-baked ideas that I have. All PostsCategoriesGitHubTwitterRSS/Atom feeds After reading nrc’s blog post about graphs, I felt inspired to write up an alternative way to code graphs in Rust, based on vectors and indicates. This encoding has certain advantages over using Rc and RefCell; in particular, I think it’s a closer fit to Rust’s ownership model. (Of cou
よくある質問 このページはプログラミング言語Rustへのよくある質問に答えるために存在しています。 完璧な言語へのガイドでも、言語を教えるためのツールでもありません。 Rustコミュニティの人が出喰わすよく繰り返される質問への参考となる回答であり、Rustの設計上の判断の背後にある論拠を明らかにするためのものです。 もしよくある、あるいは重要な質問で、不当にここに掲載されていないと感じるものがあるなら気軽に修正して貢献して下さい。 Rustプロジェクト プロジェクトのゴールは何ですか? 安全で、並行で、実用的なシステムプログラミング言語を設計し実装することです。 Rustは同程度の抽象レベルと効率性を兼ね備えた言語が満足に存在しないため存在しています。特に、以下の点が満足出来ません 安全性への考慮がほとんど払われていない 並行性のサポートが貧弱 実用性に乏しい リソースへの制御が限られてい
Cross-compile and link a static binary on macOS for Linux with cargo and rust One Go feature which I’m using regularly is cross-compiling Go code to other platforms (usually from macOS to linux-amd64). In Go, this is a built-in feature that “just works”. The following command produces a statically linked ELF binary which can simply be copied and run on a Linux machine: $ GOARCH=amd64 GOOS=linux go
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く