タグ

rustに関するmatsu7874のブックマーク (14)

  • Rustでmockするならmockallで決まり!・・・でよろしいでしょうか?

    Rustで DI (Dependency Injection)、してますか? 今日話題にするのはドメイン層でインターフェイスを定義してインフラ層でその実装を書くやつです。 例えばドメイン層で trait UserRepository を書いて、インフラ層で struct UserRepositoryImpl するやつです。 テストを書くとき、 struct UserRepositoryImpl はDBアクセスなどしてしまうので取り回しが悪いから、mock を作って fixture を入出力したいことありますよね。 Rustでそういうことやるなら mockall がオススメだよという記事です。 そんなに不満はないのですが、もしベターなやり方があったら記事末尾のコメントやTwitterやらもらえたら嬉しいです。 前職のFOLIO時代の同僚で現CADDiの むらみんさんの記事 に 外部通信のよう

    Rustでmockするならmockallで決まり!・・・でよろしいでしょうか?
  • Rust のイテレータを使いこなしたい - Don't Repeat Yourself

    最近、 Project Euler を Rust でコツコツと解いているのですが、イテレータ(Iterator)を使いこなせるときっといい書き方ができそうだなあと思う場面が多く、イテレータに改めて入門したいと思いこの記事を書きます。 書き始めていまいちまとまりのない感じになってしまいましたが、せっかく書き始めたので記事を公開して供養しておきます。 内容は、公式ドキュメントか、『プログラミング Rust』に大きくよっています。それらからヒントを得ながら自身でまとめ直した記事です。 今回の記事は JavaScala に前提がある方向けに書いています。一方で、その他の言語出身の方でもある程度お楽しみ頂ける内容にはなっていると思います。イテレータのコンセプトは、言語間でそう大差ないはずだからです。 イテレータとは何か イテレータとは一連の要素(ベクタ、リスト、文字列、ハッシュマップなど)に対

    Rust のイテレータを使いこなしたい - Don't Repeat Yourself
  • RustのWebフロントエンドフレームワーク「Kagura」をElectron上で動かしてみる - Qiita

    RustでもWebAssembly出力ができるようになっているんですが、いつか触ろうと思いつつずっと触る機会がありませんでした。 ちょうど自身の周りでもElectronの利用事案が増えて来て(例えばPostludium/Peridotでパイプラインの設計エディタのためにElectron使おうと思ったこともありました......)、良い機会なので入門として件名のライブラリを触ってみることにしました。 Kaguraとは Rust製のWebフロントエンドフレームワークです。端的に言ってしまえばReactVueなどの仲間です。 仮想DOMを用いて差分レンダリングを行う点は既存のフレームワーク同様ですが、アーキテクチャ的にはHalogenやElmが近いです (いわゆるTEAの形をとっています)。 RustWebAssemblyを出力する、動かす Rustにはwasm-bindgenという便利ツー

    RustのWebフロントエンドフレームワーク「Kagura」をElectron上で動かしてみる - Qiita
  • Introducing MIR

    We are in the final stages of a grand transformation on the Rust compiler internals. Over the past year or so, we have been steadily working on a plan to change our internal compiler pipeline, as shown here: That is, we are introducing a new intermediate representation (IR) of your program that we call MIR: MIR stands for mid-level IR, because the MIR comes between the existing HIR ("high-level IR

    Introducing MIR
  • 安定化間近!Rustのimpl Traitを今こそ理解する - 簡潔なQ

    概要: impl Trait が安定化間近である。これはトレイトオブジェクトと似た用途を持つが、静的ディスパッチされSizedのまま使えるため効率的である。 impl Trait が安定化間近 Rustでは新規の機能はまずnightlyバージョンに「不安定機能 (unstable feature)」として取り入れられます。そこでの実験を経て、プログラミング言語Rustに半恒久的に導入してもよいと合意されたものだけが「安定化 (stabilize)」され、betaやstableバージョンのコンパイラでも使用できるようになります。 さて、現在 「impl Trait」と呼ばれる機能の安定化のめどがたったというアナウンスがありました。この機能は2016年夏ごろに実装され、長い間待ち望まれてきた目玉機能のひとつでしたが、ここにきてようやっと、という感じです。そこで、 impl Trait について

    安定化間近!Rustのimpl Traitを今こそ理解する - 簡潔なQ
  • Rust Language Cheat Sheet

    Rust Language Cheat Sheet 24. September 2024 Contains clickable links to The Book BK, Rust by Example EX, Std Docs STD, Nomicon NOM, Reference REF. Clickable symbols BK The Book. EX Rust by Example. STD Standard Library (API). NOM Nomicon. REF Reference. RFC Official RFC documents. 🔗 The internet. ↑ On this page, above. ↓ On this page, below. Other symbols 🗑️ Largely deprecated. '18 Has minimum

  • Rust製の分散オブジェクトストレージをOSSとして公開しました - dwango on GitHub

    はじめに ドワンゴではniconicoの配信系サービスのバックエンドで利用するために、Frugalosという名前の分散オブジェクトストレージを開発しているのですが、この度OSSとして公開することとなりましたので、この場を借りて軽く紹介させて貰います。 FrugalosはRustで実装されており、現時点では以下のリポジトリが公開されています: raftlog_protobuf: raftlogへのProtocol Buffersサポートの追加 “Frugalos"って何? “Frugal object storage"の略です。 “frugal"は日語では「倹約な」や「節約する」といった意味となり、「読み書き性能を犠牲にせずに、膨大な数のBLOB(Binary Large OBject)を、容量効率良く保持する」ことを目指して開発されているオブジェクトストレージです。 提供されている機能は

    Rust製の分散オブジェクトストレージをOSSとして公開しました - dwango on GitHub
  • Rustの単一実装トレイトパターン - 簡潔なQ

    概要: ただ一つの実装をもつトレイトを定義するデザインパターンでできることとデメリットを紹介する。「単一実装トレイトパターン」という名前は今考えたもので、他に名前があるかもしれない。 既存の型や既存のトレイトにメソッドを追加する Rubyというプログラミング言語では、既存のクラスにメソッドを追加できる。InfoQの2008年の記事がわかりやすい。 単一実装トレイトパターンを使うと、Rustで同じことができる。 // 文字列にfooメソッドを追加する pub trait FooMixin { fn foo(&self); } impl FooMixin for str { fn foo(&self) { println!("foo {}", self); } } fn main() { "hoge".foo(); } Rubyのオープンクラスと異なり、Rustのこれは非常に保守的である。 メ

    Rustの単一実装トレイトパターン - 簡潔なQ
  • Rust製ツールを使って定時で帰ろう (ripgrep,fd,exa)

    June 19, 2018 各種linuxコマンドをリッチで処理速度も早いRust製のCLIに置き換ると幸せになれるかもという話。タイトルが煽り気味で恐縮ですが、作業効率はわりかし上がると思うのでおすすめです。 (2023/09/25追記) exaがarchiveされezaにportされたようなので更新しました。 (追記終わり) 今回紹介するのは以下の3つのCLIです。 ripgrep fd exa eza ripgrep https://github.com/BurntSushi/ripgrep コマンド名はrg。grepの拡張版。agより若干速い。 brewで入ります。 brew install ripgrep -z で圧縮ファイルの中身も検索 .gitignore に記載のディレクトリ・ファイルを無視してくれる、すべて含むことも可能 SJISやEUC-JPなどもサポート、 -E で任

  • ISUCON8にRustで参加するためにしたこと - 簡潔なQ

    背景 ISUCONとは、与えられたWebサービスをいい感じにスピードアップするコンテストである。 いい感じに最適化すさえすれば言語は問われない。ということは、最初に提供される参照実装の書かれた言語を使うのが得策である。 複数の言語で参照実装が提供されることはあるが、Rust版が提供される可能性は高くない。 まず、ISUCONではないコンテストをする覚悟を持つ http://isucon.net/archives/52012898.html 競技の成り立ちにも由来しますが、ISUCONは参加して学ぶことではなく「勝つこと」が前提となっているイベントです。 とある。↑に書いたように参照実装でない言語を好んで使うということは割とこれに反しているし、ISUCONで来得られる経験の一部を「IShokU CONtest」の経験に変換することになる。(オペレーション担当が必死にログを見ている傍らでひた

    ISUCON8にRustで参加するためにしたこと - 簡潔なQ
  • rustup で Rust コンパイラーを簡単インストール - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    rustup で Rust コンパイラーを簡単インストール - Qiita
  • Rust (Cargo)におけるクレートのバージョンと互換性について - Qiita

    CargoのクレートのバージョンはSemantic Versioning(SemVer)によって互換性が担保されている1ので、ライブラリの利用者はcargo updateを実行するだけで互換性を保ったまま依存ライブラリをアップデートできます。 しかし、それはあくまでライブラリとアプリケーションの双方でバージョンの設定が適切に行われた場合の話であり、これが不十分であった場合はcargo updateを実行した途端にコンパイルが通らなくなってしまうといったことが起こりえます。 この記事では適切なバージョニングのための基的な考え方を掴むことを目標とします。記事の前半ではCargoにおける依存クレートのバージョンの扱いについて述べ、それを踏まえて後半ではライブラリ作者向けにバージョニングに関するルールや慣習について述べていきます。 Semantic Versioning Cargo固有の問題に進

    Rust (Cargo)におけるクレートのバージョンと互換性について - Qiita
  • Rust、Alexa... 検索技術の最前線で実力を試す5日間 夏のインターンシップを開催します!

    RustAlexa... 検索技術の最前線で実力を試す5日間 夏のインターンシップを開催します! 2018.07.09 テクノロジー Rust イベント インターンシップ 採用活動 こんにちは!技術部・インターンシップ企画チームの川口です。梅雨があっという間に明け、いよいよ夏がやってきますね。夏といえば...いろいろ思い浮かぶものはありますが、学生の皆様の中ではインターンをしたいと考えている方も多いのではないでしょうか?フォルシアでは、自分の研究や経験を活かして活躍したいエンジニア志望の学生の皆様に向けた、ワクワクするようなインターンシップをご用意しました!(もちろん有給です!) 概要は下記リンクをご覧ください。(現在は終了しております) FORCIA Summer Internship 2018 RustAlexa... フォルシアならではの選べる8コース 検索アプリケーション開発

    Rust、Alexa... 検索技術の最前線で実力を試す5日間 夏のインターンシップを開催します!
  • 【翻訳】Rustにおけるパフォーマンスの落とし穴 - Read -> Blog

    Public Domain Mark 1.0 Rust Performance Pitfalls — Llogiq on stuff 全体的に見ると、Rustのパフォーマンスはとてもよいと言える。最も単純な書きかたでコードを書いても、最適化されたC/C++プログラムより2倍遅くなることはないだろう。しかしながら、Rustは速度をなんらかの理由により犠牲(tradeoff)にすることがある。ここでは、あなたを困らせるかもしれないいくつかの点をリストにして、それについてどのようにしたら速度を改善できるかを示す。 題に入る前に、この記事は単に一般的なアドバイスにすぎず、特定の場面で当てはまるかどうかは分からないという点に留意していただきたい。カーク・ペパーディーンが常に忠告している言葉に従えば「測れ!推測するな!」ということだ。 --releaseを使おう Rustにおける最初のつまずきの石は

    【翻訳】Rustにおけるパフォーマンスの落とし穴 - Read -> Blog
  • 1