タグ

Rustに関するzyzyのブックマーク (164)

  • RustのPinチョットワカル - OPTiM TECH BLOG

    こんにちは。 先日、しばらく不動の一位を守ってきたRustVSCodeで使う記事を抜き、 私の書いた非同期プログラミングの記事の記事が一番人気になったと思いきや数日でまた抜き返されて傷心中の、 R&Dチームの齋藤(@aznhe21)です。 さて、Rustの非同期プログラミングで時々Pinを使ったり、コンパイラにUnpinが不足していると怒られたりしませんか? そんな時によく分からずuseしたり別の手段を取ったりしていませんか? 今回、このままではマズいと思ってPinを勉強して完全に理解しましたので、その成果を皆さんと共有したいと思います。 更新履歴 03/10 指摘を受け下記2点を修正しました Unpinを実装しない型もムーブ出来ることへの言及 pin-projectクレートが安全であることによる書き換え 対象読者 この記事は下記全てに当てはまる人を想定して執筆しています。 Rustのト

    RustのPinチョットワカル - OPTiM TECH BLOG
    zyzy
    zyzy 2021/12/14
    全然把握できてなかったPin周り
  • Rustのcustom attributeチュートリアル - Qiita

    追記(2019/7/22) コメント欄にてさらに詳細な解説を頂きましたので、そちらもご覧ください。 はじめに custom attributeとはRustのprocedural macroの一種です。例えば こんな感じで#[hello_world]というマクロを定義して関数などに付けることができます。せっかくRust 2018で安定化されたのに、あまり具体的なチュートリアルがなさそうだったので簡単な使い方を書いてみます。 マクロ周りはnightly前提だったりすることも多いですが、ここではstable(1.36.0)の範囲内で書けるものを扱います。 また、今回作成したサンプルソースは以下に置いてあります。 題材 関数呼び出しの前後にメッセージを出力するcustom attributeを実装します。 すなわち

    Rustのcustom attributeチュートリアル - Qiita
    zyzy
    zyzy 2021/12/13
    コメント欄も参考になる
  • Rustの手続きマクロに関する知見をまとめてみた|TechRacho by BPS株式会社

    どうも。yoshiです。プロフィールにC++erと書いているけど最後に書いたC++記事は一昨年のでした。最近は業務ではC++もやるけどプライベートだとTSかRustみたいな感じになってます。業務の方もTS率高め。C++もつい先日C++20の規格がISOから正式発行されたところなので書こうと思えばネタはあるのですが、最近規格を読むモチベがあまりないのでやめておきます。 というわけで今回はRustの手続きマクロ(Procedural Macros)の話をします。 ところでProcedural Macrosの訳語には「手続き型マクロ」派と「手続きマクロ」派がいるようですが、どっちがいいんでしょうね? 「手続き型」の場合は「手続き型プログラミング(Procedural Programming)」などの既存の言葉に合わせてだと思いますが、この場合の「型」はTypeのことではないので、型の話が多いRu

    Rustの手続きマクロに関する知見をまとめてみた|TechRacho by BPS株式会社
    zyzy
    zyzy 2021/12/12
    この辺ゴリゴリ書けたらいろいろできるんだろうな
  • Rust AST 入門

    これは、簡単な Rust の AST をざっと読めるようになる、もしくは該当のドキュメントを読めるようになる、といったことを目的としたものである。入門といっても網羅的なものではなく、雰囲気を掴んでほしいという意味合いで書いたものであって細かいところまでは説明しないつもりである。なお Rust には型などより多くの情報も含む HIR などいくつかの AST があるが、ここではコンパイル時に最初に作られる AST についてのみふれる。 プログラミング言語で一般的に述べられる AST 自体についてはここでは説明しないので他を参照するとよい。有用そうなもののリンクは以下の通りである。 ASTs - What are they and how to use them Crafting Interpreters また、AST を確認するというと AST explorer も有用だが、 AST expl

    Rust AST 入門
    zyzy
    zyzy 2021/12/12
    Procedural macro書こうと思ったら理解していないと駄目らしいが、まだ全然わからん……
  • Rustで作る公開鍵暗号 - STORES Product Blog

    この記事はhey Advent Calendarの3日目です。 データチームの @komi_edtr_1230 です。 僕はRustが好きで、かつ最近はブロックチェーン周りの技術が楽しくなってきているので、そんなわけで今回のアドベントカレンダーの企画としてRustで公開鍵暗号を実装しました。 データチームはデータ分析の際には個人情報などを取り扱うこともあり、セキュリティについての知識をつけておくのはマストであるので、公開鍵暗号について理解を深めておくのは非常に有用です。 なので今回の記事ではブロックチェーンにも使われている公開鍵暗号の理論的な話、そしてその実装についてまとめていきます。 ※説明の中でちょっとだけ算数がありますので算数アレルギーの方はご注意ください。 ブロックチェーンと公開鍵暗号 ブロックチェーンとは何かというと、ネットワークのトランザクションを時系列に沿って保存していくデー

    Rustで作る公開鍵暗号 - STORES Product Blog
    zyzy
    zyzy 2021/12/08
    代数学なら多少興味持てるけど楕円曲線って代数学関係ないんでしょ? と思って勝手に敬遠してたので、凄いありがたい。ただフェルマーの小定理書き方それだと意味違ってしまってるような……?
  • RustでJSONパーサーをフルスクラッチで実装する - Qiita

    この記事はRust Advent Calendar 2021 カレンダー2の1日目の記事です。 はじめに エンジニアは一度はJSONパーサーをフルスクラッチで実装したほうが良いという天啓を受け、RFC 8259を読みつつRustでJSONパーサーを実装してみました。パーサーの実装は面白く勉強になり満足しましたが折角なのでhands-on形式の記事にしようと思いこの記事を書きました。 Rustの基的な文法が分かる方向けに記事を書きましたが、これからRustを勉強してみたい方にもぜひ挑戦してほしいです。 複雑な機能は使っていないので、分からない文法や標準ライブラリは公式ドキュメントを読めば十分補完できると思います。 The Rust Programming Language 日語版 Rust by Example 日語版 monkey-json 記事ではRustでJSONパーサー(mo

    RustでJSONパーサーをフルスクラッチで実装する - Qiita
    zyzy
    zyzy 2021/12/01
    UTF-16の処理をしっかりしてるの偉すぎる……。自分だったら最初は無視する
  • Generic associated types encode higher-order functions on types | Will Crichton

    zyzy
    zyzy 2021/11/19
    GATs実装で型レベルプログラミング勢がRustに参戦しとる……
  • The push for GATs stabilization | Rust Blog

    Where to start, where to start... Let's begin by saying: this is a very exciting post. Some people reading this will be overwhelmingly thrilled; some will have no idea what GATs (generic associated types) are; others might be in disbelief. The RFC for this feature did get opened in April of 2016 (and merged about a year and a half later). In fact, this RFC even predates const generics (which an MV

    The push for GATs stabilization | Rust Blog
    zyzy
    zyzy 2021/11/19
    知らん間にStableまで行ってたHKTエミュできる奴
  • Rustでもモナドは実装できるのか?(再) - Don't Repeat Yourself

    この記事は言語実装Advent Calendar 2020 25日目の記事です。(2022-11-06: 記事の内容を追記していますが、この記事の結論としては「似たようなものは作れるが、完全体にはならない」です) 前提知識 高階カインド型 モナド 従来のエミュレーション方法 Generic Associated Types を用いたエミュレーション(new!) 型クラスを定義する Functor を用意する Pointed を用意する Applicative を用意する Monad を用意する いくつか型を実装していく 現状実装できないもの do 記法 Generic Associated Types(GATs)とは何か 追記(2022-11-06) リポジトリ 参考文献 モナドに関する話題が言語実装アドベントカレンダーの範疇に入るのかわかっていませんが*1、プログラミング言語がお好きな方

    Rustでもモナドは実装できるのか?(再) - Don't Repeat Yourself
    zyzy
    zyzy 2021/11/19
    rustのHKTエミュレート、見ない間に結構事情が変わってた。
  • rustのIteratorの実装 - 睡分不足

    関連するトレイト Iterator libcore/iter/traits/itetarot.rs pub trait Iterator { type Item; fn next(&mut self) -> Option<Self::Item>; ... } イテレータの関数のためのトレイト next()さえ実装すれば,あとはデフォルト定義が存在 IntoIterator libcore/iter/traits/collect.rs pub trait IntoIterator { type Item; type IntoIter: Iterator<Item=Self::Item>; fn into_iter(self) -> Self::IntoIter; } impl<I: Iterator> IntoIterator for I { type Item = I::Item; typ

    rustのIteratorの実装 - 睡分不足
    zyzy
    zyzy 2021/11/17
    Arrayを取れないのは部分的にdropさせるわけにはいかないからか……。この辺の挙動すぐ忘れる
  • Rustの構造体メモリレイアウト - ryochack.blog

    Rustの構造体のメモリレイアウトについてのメモ。 Rustで次のような構造体を定義したときに、構造体のメモリレイアウトはどうなるか? struct Layout { b1: u8, s1: u16, b2: u8, w1: u32, b3: u8, w2: u32, s2: u16, s3: u16, } 検証時のRustのバージョンは次の通り。 stable-x86_64-unknown-linux-gnu rustc 1.24.1 (d3ae9a9e0 2018-02-27) TL;DR 先に結論を書く。 アトリビュート指定によって構造体のメモリレイアウトとサイズは以下のように変化する。 デフォルト 構造体サイズ20Byte repr(C)アトリビュート指定 構造体サイズ24Byte repr(packed)アトリビュート指定 構造体サイズ17Byte 以下に確認の過程を残しておく。

    Rustの構造体メモリレイアウト - ryochack.blog
    zyzy
    zyzy 2021/11/14
    知らなかった。賢いなぁ。
  • ちいさな Web ブラウザを作ってみよう

    ちいさな Web ブラウザを作ってみよう
    zyzy
    zyzy 2021/11/13
    うわこれはやりたいけどなかなか大変そうだ
  • Bevy Engine

    A refreshingly simple data-driven game engine built in Rust Free and Open Source Forever! Get Started All engine and game logic uses Bevy ECS, a custom Entity Component System Fast: Massively Parallel and Cache-Friendly. The fastest ECS according to some benchmarksSimple: Components are Rust structs, Systems are Rust functionsCapable: Queries, Global Resources, Local Resources, Change Detection, L

    Bevy Engine
    zyzy
    zyzy 2021/10/30
    今だとAmethystよりこっちなんかな?/ECSのシステムシンプルで良いし、Scalaだったらimplicit argumentで実装できそうだけどrustでどうやってんのか見てみたら普通にリフレクション参照して強引に解決してた。
  • GitHub - amethyst/amethyst: Data-oriented game engine written in Rust

    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 - amethyst/amethyst: Data-oriented game engine written in Rust
    zyzy
    zyzy 2021/10/20
    データドリブンな感じのゲームエンジンとの事/ecsはBevyの方がスマートだがあっちはgltfのアニメーションに未対応なので3Dゲーム作りたかったら実質こっち
  • MABAR69: Update Link Nyelot Game Model Terbaru Versi Aplikasi Online Teratas

    MABAR69 adalah aplikasi model online terbaru bagi pecinta game online untuk mencari kebutuhan nyelot sendiri. Tanpa pikir panjang dengan kelenturan dan kemewahan link game terupdate, MABAR69 mengerti akan kesadaran pemain game online yang ingin mempermudahkan untuk login tanpa ada kendala. Maka dari itu dengan penilaian percobaan versi online untuk link nyelot, maka tidak akan ada rasa penyesalan

    zyzy
    zyzy 2021/10/20
    yewとどっちがいいか……こっちのが早いらしいが
  • GitHub - yewstack/yew: Rust / Wasm framework for creating reliable and efficient web applications

    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 - yewstack/yew: Rust / Wasm framework for creating reliable and efficient web applications
    zyzy
    zyzy 2021/10/20
    とりあえず触るならこれなんかな? お手軽だが遅いとの事
  • GitHub - iced-rs/iced: A cross-platform GUI library for Rust, inspired by Elm

    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 - iced-rs/iced: A cross-platform GUI library for Rust, inspired by Elm
    zyzy
    zyzy 2021/10/19
    elmっぽいという事で、多分関数型っぽく書けそうな気がするが。
  • Actix - actor framework for Rust

    Actix WebActix Web is a powerful, pragmatic, and extremely fast web framework for Rust

    zyzy
    zyzy 2021/10/19
    rust版Akka-HTTPらしい。ActixがActorシステムでその上にActix-webが乗る、と。Actixの下はtokioとのこと
  • Cloudflare Workers 面白い - ゆーすけべー日記

    追記 Cloudflare Workers向けのWebフレームワークを作っているので、そちらを是非チェックしてみてください! honojs/hono: Ultrafast web framework for Cloudflare Workers. Fast, but not only fast. Cloudflare Workers が面白い。面白いので、いくつか簡単なアプリを作ってみた。例えば、そのひとつが Slack Bot で「yusukebe++」とかやるとインクリメントされるやつ。 今回は Cloudflare Workers の面白さについて解説する。より興味のある方がいれば、上記のコードを参考にしてもらうといいだろう。 Cloudflare Workers とは? Cloudflare の CDN エッジでスクリプトが動くのが Cloudflare Workers。いわゆる

    Cloudflare Workers 面白い - ゆーすけべー日記
    zyzy
    zyzy 2021/10/16
    面白そう
  • Rust開発時の便利ツールたち

    前書き Rustを書くときに便利なツールをまとめた記事が無い気がしたので作成。(ちゃんと探してないので既にあるかも) 公式ツール cargo パッケージマネージャ 基だけどとても便利なツール 一度はThe Cargo Bookを読んでおくことを推奨。 rustfmt フォーマッター cargo fmt でもフォーマットの修正が出来る。(こっちを使うことが多い) clippy lintツール こう書いたほうが良いよという提案もしてくれるので便利。 cargo clippy --fix を使うと自動で直してくれる。 rust-analyzer Language Server rls もあるが、(最近は?) rust-analyzer の方がメジャーな気がする。 追記 : RLSは非推奨になりました。RLS Deprecation 非公式ツール cargo-watch ソースコードの変更を検知

    Rust開発時の便利ツールたち
    zyzy
    zyzy 2021/10/15
    cargo-watchがちょうど探してたやつでありがたい。