Skip to content

Instantly share code, notes, and snippets.

@takkanm

takkanm/gist:13776f716cce525753aa Secret

Last active Nov 4, 2015
Embed
What would you like to do?

ここ 1, 2 週間で気になった Rust 関連の記事紹介

最近見かけた Rust 関連の記事で気になったものの中身を紹介。

Testing crates and best practices

Rust Fourm より。Ruby のようにテストを Rust で書くためのフレームワークを探しているスレ。 スレ主は以下のフレームワークを紹介していた。

https://github.com/BurntSushi/quickcheck

ランダムテストを支援するライブラリ

https://github.com/zummenix/expectest

expect!(result).to(be_equal_to([1, 2, 3])); のような RSpec like な書き方を提供するフレームワーク。

https://github.com/carllerche/hamcrest-rust

assert_that(&1, is(equal_to(&1i))); のように最近の JUnit っぽい書き方を提供。

https://github.com/reem/stainless

describe! のような RSpec っぽい構造化を提供してくれる。

Good Practices for Writing Rust Libraries

Rust でよいコードを書くための道具を紹介しているエントリ。

コードをきれいにするために

rustfmt

https://github.com/nrc/rustfmt

rustfmt は gofmt のようなもの。style は http://doc.rust-lang.org/nightly/style/ を参照している。 この style 自体は、RFC として定められているやつから、無いものまで様々。 rustfmt.toml にて設定をカスタマイズできる。

Lint を使う

rustc に標準で用意されている Lint を使う。Lint のマクロとしては以下が用意されている。

  • allow(c) c を許す
  • deny(c) c をエラーにする
  • forbid(c) deny より優しい
  • warn(c) ワーニングにする

組み込みの Lint 内容としては https://github.com/rust-lang/rust/blob/master/src/librustc/lint/builtin.rs に書かれている。

さらに Lint を使う

https://github.com/Manishearth/rust-clippy を使うことで、標準の Lint よりチェックを行なえる。

よいプロジェクトにするために

cargo にメタデータを追加する

cargo.toml にパッケージのメタデータを追記しておくことで、crates.io で情報が見れるようになる。 また、version 情報には、依存関係を解決できるようにするため、ワイルドカードのバージョンを使うべきではない。 バージョンを指定することで、https://github.com/killercup/cargo-edit を使って変更などもできるようになる。

README を書く

以下を書こう。

  • このプロジェクトは何なのか
  • どうやってインストール/使うのか
  • ドキュメントはどこ ?
  • ライセンスは ?

他のメタファイルを置く

.gitignore や .editorconfig を置くことを推奨。

CI を使う

TravisCI を使おう。https://github.com/huonw/travis-cargo を使うと、travis や coveralls、appveyor でのテストを助けてくれる。

ドキュメントを自動生成する

travis-cargo を使えばドキュメントの自動生成を手伝ってくれる。

Homu を使う

Rust Project が GitHub 上で使っている bot は https://github.com/barosl/homu だ。

もあとりっく

Implement cargo install #2026

https://github.com/rust-lang/rfcs/blob/master/text/1200-cargo-install.mdcargo installcargo uninstall の実装が cargo のマスターにとりこまれた。 ただし、Rust1.4 に付属する cargo には含まれていない。 help には書かれていないが含まれている模様。

これにより、crates.io からのバイナリ配布や、github などのリポジトリから簡単にバイナリのインストールがけいるようになる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment