タグ

rustに関するyusuketのブックマーク (18)

  • Rustのメモリ管理機能とその特徴

    初出:技術評論社刊「ソフトウェアデザイン 2021年9月号」 先日、技術評論社よりRustのメモリ管理機能についての特集に寄稿させて頂きました。 この記事は自分が寄稿させていただいた記事をブログ用に一部推敲・加筆を加えたものです。 なお、ソフトウェアデザインでの特集ではより実践的な例でのメモリ管理についての解説もあるので、興味のある方は誌のほうも手にとっていただければと思います。 プログラム言語におけるメモリ管理の課題プログラミングにおける課題の一つとしてどうやってメモリ領域(ヒープ領域)を管理するかというものがあります。 C言語ではmalloc/free関数などを用いて手動でメモリを管理しています。 これらの関数はメモリアドレスを示すポインタを介してメモリ管理を行います。 malloc関数は必要なメモリ領域を確保してその先頭番地のポインタを返し、プログラム内ではその番地のメモリを読み書

  • Introduction - Rust Design Patterns

    Introduction Participation If you are interested in contributing to this book, check out the contribution guidelines. News 2024-03-17: You can now download the book in PDF format from this link. Design patterns In software development, we often come across problems that share similarities regardless of the environment they appear in. Although the implementation details are crucial to solve the tas

  • 2020 年版 Command Line Tool を作ってみる in Rust - Qiita

    2 年前に書いた記事 Command Line Tool を作ってみる in Rust が今でも参照されることがあるようなので、2020 年版にアップデートした内容を書いていきます。 概要 この記事では Rust で Command Line Tool を作るときに、便利なライブラリ、ツール、そしてサービスを紹介します。主に CLI working group が取り組んでいる Command Line Applications in Rust(以後 Book と呼称)のアップデート内容が中心です。その他にプラスアルファして個人的に便利だと思うツールやサービスを紹介していきます。 こちらに完全なサンプルコードを公開しています。 見やすさの都合上、説明と直接関係のないコードや設定は省略して表示します。手元でビルドして確認したい場合はこちらのソースコードをダウンロードしてご確認ください。 エラ

    2020 年版 Command Line Tool を作ってみる in Rust - Qiita
  • Rustで古典的なDisk-Oriented DBMSを実装した話 - Write and Run

    KOBA789 です。みなさん DBMS は好きですか。私は好きです。 最近、自作 DBMS をずっと作っていて、ようやく最低限の機能ができたので公開をしました。 (とはいえコードを書いていたのは正味2日ほど。設計と勉強に2週間かかった) github.com この記事ではこれを作った目的と、そのちょっとした詳細についてご紹介します。 目的 Disk-Oriented DBMS の学習に適している Rust で書かれた実装が欲しかった、というのが理由です。 DBMS の勉強に適している実装というのは意外と多くありません。 MySQL や PostgreSQL といった有名な実装は実用的である一方でコード量は非常に多く、また細かな最適化によって教科書的なアルゴリズムと実際のコードの差が大きくなっているため、初学者にとっては構造を把握しづらくなっています。 教科書的な実装の Disk-Orie

    Rustで古典的なDisk-Oriented DBMSを実装した話 - Write and Run
  • Rustに影響を与えた言語たち - Qiita

    各カラムの意味は次のとおりです。言語の特徴は主にWikipediaを参考にしていますが、正確な分類は困難なため多少の独断と偏見が含まれていることをご了承ください。 登場年代 プログラミング言語が登場した年代です。前後3年の誤差は見逃してください FP(関数型プログラミング) 言語がFPを強くサポートしているかを示しています 程々にサポートしている場合は△を示しています OOP(オブジェクト指向プログラミング) 言語がOOPを強くサポートしているかを示しています 並行計算 アクターや CSP/π計算モデルの特徴を言語が強くサポートしているかを示しています 外部ライブラリを使えばできるよ!みたいなものは除外します 静的型付け 言語の最も主要な処理系が静的型付けをサポートしているかを示しています パラメータ多相 言語がパラメータ多相をサポートしているかを示しています ジェネリクス(Java)、テ

    Rustに影響を与えた言語たち - Qiita
  • 安全なシステムプログラミング言語Rustへの招待 | κeenのHappy Hacκing Blog

    # 安全なシステムプログラミング言語Rustへの招待 ---------------------- [IIJ Labセミナー](https://iijlab-seminars.connpass.com/event/152079/) === # About Me --------- ![κeenのアイコン](/images/kappa.png) * κeen * [@blackenedgold](https://twitter.com/blackenedgold) * Github: [KeenS](https://github.com/KeenS) * GitLab: [blackenedgold](https://gitlab.com/blackenedgold) * [Idein Inc.](https://idein.jp/)のエンジニア + 2年半くらい仕事Rustを書いている

  • Rustの非同期プログラミングをマスターする - OPTiM TECH BLOG

    こんにちは、R&Dチームの齋藤(@aznhe21)です。 さあみなさん、ついにこの時がやってまいりました。 日2019/11/8にリリースされたRust 1.39により、あらゆる環境で最高速な非同期プログラミングが可能になりました。 新たな時代に乗り遅れないよう、今のうちにRustでの非同期プログラミングをマスターしておきましょう。 なお、この記事は、先日開催したOPTiM TECH BLOG Meetupの内容を大幅に加筆修正した上でエントリに仕上げたものです。 まず最初に伝えたいこと 非同期の歴史 Rustの非同期プログラミングの歴史 Rust 1.0以前 Rust 1.0 〜Rust 1.3 Rust 1.2あたり Rust 1.11あたり Rust 1.26あたり Rust 1.36 Rust 1.39 Rustの非同期プログラミングの特徴 ゼロコスト抽象化 プラットフォーム非依

    Rustの非同期プログラミングをマスターする - OPTiM TECH BLOG
  • Rust Language Cheat Sheet

    Rust Language Cheat Sheet 2. May 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 edition

  • Rust 1.33を早めに深掘り - OPTiM TECH BLOG

    オプティムのテックブログがRustブログと化してきた今日この頃、皆様いかがお過ごしでしょうか。R&Dチームの齋藤です。 日、日時間2019/03/01(金)にRust 1.33がリリースされました。この記事ではRust 1.33での変更点を詳しく紹介します。 なお、この記事は公式リリースノートをベースに、翻訳・追記をしています。 また、公式のブログ記事も参考にしてみてください。 言語 cfg(target_vendor)が使えるようになった 整数型が網羅的(exhaustive)にパターンマッチするようになった if letやwhile letで複数の条件を書けるようになった if letやwhile letでの反駁不能パターンがエラーから警告になった const関数でいくつかの機能が使えるようになった const unsafe関数がconst関数から呼べるようになった cfg_att

    Rust 1.33を早めに深掘り - OPTiM TECH BLOG
    yusuket
    yusuket 2019/03/05
  • Rust初心者が参考になった記事 - Qiita

    はじめに ちょっと年末にかけて、Rustをガッツリ書く機会があったんですが、 Rustを触ったのが久々ということもあり、結構苦戦した部分もありました。 そこでまた忘れないように参考になった記事をここにまとめておこうかなと考えました。 僕のようにまだRust初心者である方にとっても参考になったら幸いです。 参考になった記事紹介 エラーについての記事 Rustでエラーを合成する この記事を書いたきっかけといってもいいかもしれない。 Result<T, E>とResult<T', E'>のEとE'を合成する方法について記述されている。 これについて知らないとJsonのデシリアライズなどで困ることになる。 記事の核となるfailureのリポジトリはここにあるのでよかったら見てね。 RustのOptionとResult Optionの便利メソッドとResultの便利メソッドというのが特にいい。 st

    Rust初心者が参考になった記事 - Qiita
  • GitHub - hickory-dns/hickory-dns: A Rust based DNS client, server, and resolver

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - hickory-dns/hickory-dns: A Rust based DNS client, server, and resolver
  • 概要 - Rust APIガイドライン

    Rust APIガイドライン (非公式日語訳) これはプログラミング言語RustのためのAPIデザイン上の推奨事項をまとめたものです。 大部分は、Rustエコシステム内の標準・非標準ライブラリを構築してきた経験を元に、 Rustのライブラリーチームによって執筆されました。 これはあくまで指針です。 項目ごとの充実度には差があり、今後の加筆修正が必要となっている曖昧な部分もあります。 Rustのクレート開発者は、ここから使えそうな内容を選び取り、 イディオマティックで相互運用性の高いライブラリを開発する上での重要な検討事項とするべきです。 また、このガイドラインは義務的に従わなければならない基準とされるべきではなく、 あくまで従わない場合に比べエコシステム内の他のクレートとのより良い相互運用が達成できるような 物となっています。 このブックはチェックリストと各項目の説明に分かれています。

  • Announcing Rust 1.21 | Rust Blog

    The Rust team is happy to announce the latest version of Rust, 1.21.0. Rust is a systems programming language focused on safety, speed, and concurrency. If you have a previous version of Rust installed, getting Rust 1.21 is as easy as: rustup update stable If you don't have it already, you can get rustup from the appropriate page on our website, and check out the detailed release notes for 1.21.0

    Announcing Rust 1.21 | Rust Blog
  • Rustで高速な標準出力 | κeenのHappy Hacκing Blog

    κeenです。Rustで何も考えずに標準出力に吐いてると遅いよねーって話です。 今回、標準出力に「yes」と1000万回出力するアプリケーションを書いてみたいと思います。 println! まあ、最初に思いつくのはこれでしょうか。

    Rustで高速な標準出力 | κeenのHappy Hacκing Blog
  • 実践的なアプリケーションを書いてみよう! Rustの構造化プログラミング【第二言語としてのRust】 - エンジニアHub|若手Webエンジニアのキャリアを考える!

    実践的なアプリケーションを書いてみよう! Rustの構造化プログラミング【第二言語としてのRustRustを使って、実際にアプリケーションを3つ書いてみましょう! その前に、プログラムの構造化に必要な手法、ジェネリクス、構造体、列挙型、それにトレイトといった概念についても説明します。 前回の記事では、Rustの基的な文法や型を説明し、他のプログラミング言語ではあまり見かけない、Rustならではのメモリ管理の仕組み(所有権・参照・ライフタイム)についても解説しました。 今回は、Rustを使って、実際にアプリケーションを書いてみましょう。 制作するのは、Unix環境ではお馴染みの文字列検索プログラムであるgrep(その機能限定版をRustで書いたrsgrep)、アナグラム(単語の文字を入れ替えた単語)を求めるプログラム、そしてHTTP/0.9サーバです。 しかし、アプリケーション開発に入

    実践的なアプリケーションを書いてみよう! Rustの構造化プログラミング【第二言語としてのRust】 - エンジニアHub|若手Webエンジニアのキャリアを考える!
  • Rustは何が新しいのか(基本的な言語機能の紹介) - いもす研

    Rust は、Firefox を開発する Mozilla が開発し、次世代ブラウザの開発に使っているプログラミング言語です。借用検査という概念を導入することによりメモリ安全およびデータ競合安全をコンパイラが保証する言語であり、2015年中頃の安定版のリリースあたりから次第に注目を集めるようになりました。 メモリ安全とは、メモリの範囲外アクセスや二重解放、ヌル参照、未初期化領域へのアクセスがない状態を表します。ただし、Rust の言うメモリ安全とは、メモリリークをしないことを保証するものではありません。 データ競合安全とは、あるひとつのオブジェクトに対しての読み込みおよび書き込みのが同時に起き結果が不定になる状態にならないことを表します。競合状態とは異なります。 無名関数という概念を様々な言語が次々と導入したように、プログラミング言語は相互に影響を及ぼし徐々に変化しています。Rust は「寿

    yusuket
    yusuket 2017/01/28
  • Rust言語製ゲームエンジンPistonの紹介 - Qiita

    この記事では、オープンソースで開発されているクロスプラットフォームなRustゲームエンジンPistonを紹介します。 一応、Pistonのリンクも貼っておきます。 - 公式サイト - GitHub Pistonゲームエンジンの特徴 Pistonの特徴をいくつか列挙してみます 1. Rust言語の恩恵(安全性や並列性など)を受けたゲーム制作 2. 様々なモジュール、ライブラリ 3. 2D、3Dグラフィックのゲーム開発 4. クロスプラットフォームなゲーム開発 いい感じですね。 Hello World! 早速、Pistonを使ってみましょう。 今回はpiston_windowという公式のラッパーを使ってゲームループを作ってみます。 まだRust言語をインストールしていない方は公式サイトを参考にしてインストールを行ってください。 また、Pistonが依存しているFreetypeもインストールし

    Rust言語製ゲームエンジンPistonの紹介 - Qiita
    yusuket
    yusuket 2016/04/11
  • Rust で階層的クラスタリング - StatsFragments

    こちらの続き。 Rust で重回帰 - StatsFragments Rust で主成分分析 - StatsFragments 階層的クラスタリングについてはこちらを。サンプルデータもリンク先のものを利用させていただく。 Rとクラスター(1) 再帰的なデータ構造の作成 階層的クラスタリングでは もっとも距離の小さいクラスタ同士を順に併合していく。そのため併合元となるクラスタ (子) と 作成される新しいクラスタ (親) に親子関係をもたせたい。 こういったとき、親から子に参照を持たせればいいかな? と思うのだが、Rust でこれをやろうとすると "親のインスタンスが存在している間は子への参照が有効となっている" ということを lifetime として記述しなければならず、すこし面倒である。 そのため、参照ではなく所有権を移してしまうのが一般的なようだ。 参考 The idea behind

    Rust で階層的クラスタリング - StatsFragments
    yusuket
    yusuket 2015/11/29
  • 1