タグ

2020年8月31日のブックマーク (2件)

  • Arc<Mutex<T>>という形はデザインパターン - Rustコトハジメ

    RustはGCのない言語なので、GCがあった時にふつうに書けていたコードが書けなくなります。その典型例はリスト・ツリー・グラフといった再帰的な構造です。 これに対してドキュメントや記事を読むと、以下のような型が出てきます。Haskellのモナドスタックの再来と怯える人もいるかも知れません。 enum List { Cons(Rc<RefCell<i32>>, Rc<List>), Nil, } pub struct NodeRef<T>(Rc<RefCell<Node<T>>>); type Link<T> = Option<Rc<RefCell<Node<T>>>>; type WeakLink<T> = Option<Weak<RefCell<Node<T>>>>; 大抵のドキュメントは、木構造を実装してみようというテーマで、上のような型がなぜ必要になるのか?を説明してから、そのマルチ

    Arc<Mutex<T>>という形はデザインパターン - Rustコトハジメ
    naitaku
    naitaku 2020/08/31
  • argopt: Rust向けの宣言的なコマンドライン引数パーザー - 純粋関数型雑記帳

    TL;DR 簡潔で直感的に扱える、宣言的なRust向けのコマンドライン引数パーザーを作りました。 https://crates.io/crates/argopt モチベーション Rustにstructoptというライブラリがあります。これはコマンドライン引数をパーズするライブラリなんですが、僕はこのライブラリが大好きなんです。Rustのライブラリの中で一二を争うほど好きです。なんならコマンドラインツールをRustを書く理由の大部分がこのライブラリの存在といっても過言ではないかもしれません(過言ですけど)。 しかしstructoptも使い続けていると、どうにももっと便利にできるんじゃないのかと思う部分が出てきます。structoptでは名前の通りコマンドライン引数をstructで定義して、それに#[derive(StructOpt)] とStructOptをderiveすることでパーザーのコ

    argopt: Rust向けの宣言的なコマンドライン引数パーザー - 純粋関数型雑記帳
    naitaku
    naitaku 2020/08/31
    使ってみたい!