タグ

programmingとRustに関するastk_fのブックマーク (41)

  • 満を持して始めるRust

    Developers Summit(デブサミ) 9-B-9 02/09 17:45 ~ 18:25 「満を持して始めるRust」kenkoooo RustC++の代替となることが期待されていることから、低レイヤ向け言語という印象を持っている方も多いかもしれません。しかし、Rust 1.0のリ…

    満を持して始めるRust
  • Rust を ChatGPT だけで勉強する【実験記録】

    C++ 経験者が、ChatGPT との対話だけで Rust を学んでみる実験の記録です。 期待した回答が得られなかった際には、質問文を変えたり、回答を再生成したりしています。 AI の回答には不正確な情報が含まれている可能性もあります。不正確な技術情報が拡散しないよう、AI の回答は画像で掲載しています。

    Rust を ChatGPT だけで勉強する【実験記録】
  • Rustでクラスを表すと

    稿の目的 Rustに存在しない「クラス」をRustの既存機能の組み合わせとして表現することで、一般的なOOP言語とRustのデータ表現に対する考え方の違いと、各概念がどのように対応しているかを理解しやすくすることが主な目的です。 主な想定言語 C++, Java, JavaScript, Rubyのクラスを主に想定しています。 方針 サブタイピング Rustにはごく限定的なサブタイピングしかないため、クラスのサブタイピングに相当する変換は明示的に .as_ref() / .as_mut() として表現します。 Deref / DerefMut を使うことで、このような振る舞いを部分的に再現できる場合もあります。ただし、この用途でDeref / DerefMutを使うのは推奨されていません。 カプセル化 一般的なOOP言語では継承関係に基づいたアクセス制御 (protectedなど) が行

    Rustでクラスを表すと
  • 新米Rustaceanの🌾🦀による🌾🦀のためのRust入門「C++/C#プログラマーでも読めるようになる」

    Rustで簡単なツールを作ってみました。はじめてのTUI(モドキ)のツールです。 このバージョン0.1.0を作ったことで得られた知見をまとめてみます。 長文になってしまったので目次をうまく使ってください。(スマホ画面だと上部の目次をタップしないと表示されないので少し見づらいです。) 「いいね」、「ツイート」、「バッジを贈る」、「コメント」大歓迎です! 作成ツール紹介 みなさん、timeコマンドでコマンドの実行時間を計測しますよね?Rust製のhyperfineというツールがあり、複数回実行して平均を出したり、複数コマンドを比較できたり便利です。 これを見て私はメモリ使用量も計測できたらうれしいなと思ったんです。 そう、このmntimeコマンドを使えば、実行時間とメモリ使用量の平均値が分かるんです! そんなツールですがRustで作った経緯は、最近ターミナル環境を整えました。そのとき、モダンで

    新米Rustaceanの🌾🦀による🌾🦀のためのRust入門「C++/C#プログラマーでも読めるようになる」
  • Rustエラーハンドリング・チートシート - Qiita

    Rustのエラーハンドリング関連の主要メソッドが一目でわかる、チートシートを作成しました。 Rustは型システムが複雑なので、やりたいことに適切なメソッドがあるかどうか、ドキュメントを探しまくることが多いです。エラーハンドリングもその類の1つであり、ドキュメント探索の手間を削減するために、チートシートを作成してみました。 ご活用ください。 1. チートシート 2. 関連リンク bool - doc.rust-lang.org Option - doc.rust-lang.org Result - doc.rust-lang.org

    Rustエラーハンドリング・チートシート - Qiita
  • 組込みエンジニアのためのRustのよくわからない記号まとめ - Qiita

    はじめに どうも、レガシー組込みエンジニアの@yagisawaです。 Rustを勉強しているとCでは見かけない言語仕様(主に記号の使い方)に出くわすことがあるので、チートシート的な感じでまとめてみました。 勉強が進み次第都度更新していく予定です。 「RustではXXX等に使います」と曖昧な表現をしていますが、私の勉強が足りていないだけで記事で紹介しているもの以外の使い方も存在する可能性がある旨、予めご承知おきください。 Cについても私が知らない使い方が存在する可能性がある旨、予めご承知おきください。仕事柄C89の仕様を主に扱っています。また記事の主眼はRustであるため、Cの情報の充実度については質ではありません。

    組込みエンジニアのためのRustのよくわからない記号まとめ - Qiita
  • Rust初学者が脱初心者するためにした事 - Qiita

    🦀はじめに🦀 はじめまして、🦀カニさん🦀です。 プログラミング歴2年目の趣味グラマーで、去年はDataCampでひたすらPythonをやっていました。 しかし途中で飽きてしまいRust入門🦀 現在はRustの学習とその備忘録も兼ねて「Rust入門」というブログを運営しています。 ブログは海外製の優良テーマを買ってマニュアル通りに設定し、Github から CloudFlare Pages に自動デプロイという感じです。 なので、JavaScriptに関しては全くと言っていい程理解していません。HTMLCSSもチートシートが無いと何もわかりません。 (実は2年前はコマンドプロンプト恐怖症でした🦀💦) でも理解してなくてもマニュアル通りに進めればきちんと自分のブログが構築できるのは素晴らしい事ですね!🦀 Twitterでは仕入れた知識を断片的にアウトプットしています。-> @

    Rust初学者が脱初心者するためにした事 - Qiita
  • Rustで型レベルプログラミング

    はじめに 通常のプログラムは実行時(ランタイム)に1 + 1など様々な計算を行う。一方でコンパイラーを持つ言語では、コンパイラーの型検査やジェネリクスなどの機構を利用して、コンパイル時にも計算を行うことができる。このようなプログラミングを、コンパイル時に検査・推論される“型”[1]に注目して型レベルプログラミングと呼ばれる。 ランタイムの計算の中にはたとえばwhile(1);のような簡単な計算で無限ループといった停止しない状況に陥いることがある。コンパイル時にできる計算でこのように無限ループに陥いってコンパイルが停止しなくなってしまったら、プログラムを実行することなく自明なエラー(型があってないとか、Rustであればfreeするタイミングが自明でないなど)を検出しようというモチベーションが崩壊してしまう。したがってコンパイル時にできる計算とはランタイムに比べて非常に限定された計算しか許可さ

    Rustで型レベルプログラミング
  • Prustiを使ってRustでプログラム検証をしよう

    導入に際し、ドキュメントに書いてないこととか色々あってつらかったため、軽くメモ代わりに投稿しておきます。 また、Prusti を使う最も簡単な方法は VSCode の拡張である Prusti-Assistant を使うことですが、Vimの使用を見越しコマンドだけで使えるようにアレコレ設定しました。 Prusti の紹介 プログラミングにおいて、関数に対してプログラマが明示的に制約を課すことはよくあります。 例えば、次のような単純な関数 max を考えます。 fn max(x: i32, y: i32) -> i32 { let result = if x > y { x } else { y }; result } さて、この関数は次のような性質を持つことが期待されます。 resultはx以上かつy以上 resultはxまたはy そういった情報は多くの場合ライブラリのドキュメントなどに書い

    Prustiを使ってRustでプログラム検証をしよう
  • Rustのグラフィクス周りメモ/wgpuとその使い方

    はじめに Rustでグラフィクスプログラムをクロスプラットフォームに書く環境が、wgpuというクレート中心に揃っていて大変素晴らしいので、それについてメモします。 記事の後半では実際にwgpuを使って三角形の描画までを試してみます。 バージョン Rust: 1.62.0 wgpu: 0.13.1 グラフィクスAPI この記事ではグラフィクスプログラミングを、グラフィクスAPIを利用したプログラミングを指すものとします。 まずはグラフィクスAPIについて最初に説明をします。 グラフィクスAPI グラフィクスのAPIとは、具体例をあげるとOpenGLやDirctX的なやつです。 現代においてリアルタイムグラフィクスを利用するプログラムを書く場合、CPUだけで実行される普通のプログラムとは違い、GPUを使うプログラムを書くことになります。 GPUを使うプログラムを書くとはどういうことかというと、

    Rustのグラフィクス周りメモ/wgpuとその使い方
  • プログラミングRust 第2版

    次世代ブラウザ開発用にMozillaによって開発されたRustは、C/C++並みのパフォーマンスと低レベルの制御能力に加え、メモリとスレッドの安全性を担保し、さらに並行性にも優れるといった特徴を持つ、優秀な言語です。書はMozillaで実際にRustを使ってFirefoxを開発している著者らによる、言語の概要と用途について解説する書籍で、Rustのほとんどの機能を詳細にカバーします。Rustのメジャーバージョンアップにより非同期処理が可能となったことに対応し、第2版では新たに非同期処理の章を設け、この機能を詳細に解説しています。Rust 2021対応。 訳者まえがき まえがき 1章 システムプログラマにもっといいものを 1.1 Rustはプログラマの負担を引き受ける 1.2 並列プログラムを飼いならす 1.3 にもかかわらずRustは速い 1.4 Rustでは協調するのも容易 2章 Ru

    プログラミングRust 第2版
  • Rustの良質な学習リソースをまとめる - BioErrorLog Tech Blog

    Rustの勉強に良さげな学習リソースをまとめます。 はじめに Rust学習リソースまとめ The Rust Programming Language Tour of Rust Rust by Example The Rust Reference The Cargo Book Crate docs Rust API Guidelines Rust Design Patterns The Rustonomicon Secure Rust Guidelines Command line apps in Rust おわりに 参考 はじめに こんにちは、@bioerrorlogです。 最近、Rustを触り始めました。 多様な領域で盛り上がりを見せているRustですが、私は最近ハマっているブロックチェーンのエコシステムでRustが使われることが直接の理由となり、Rustに入門しました。 Rustは学習

    Rustの良質な学習リソースをまとめる - BioErrorLog Tech Blog
  • Rustのコードチェックを強力にする3つのツール | κeenのHappy Hacκing Blog

    κeenです。 Rustaceanのみなさんは普段書いてるRustのコードを検証するのに cargo check や cargo test などのツールを使っているかと思いますが、それらを強力にするツールの miri 、 MIRAI 、 kani をそれぞれ紹介します。 Rustにはいくつかコードの正しさや行儀のよさを検査する方法がありますね。 cargo check や cargo test 、 あるいはビルドしたバイナリを走らせて検証したり色々手を尽くしているでしょう。 ですがこれらだけだとあらゆる種類のバグを拾いきれる訳ではないのもみなさん承知の通りだと思います。 既存の方法だと手が回らない所があるので他のアプローチでコードを検証してくれるツールがあると嬉しいですよね。 そういったツールを3つ紹介します。 先に注意しておくと、これらのツールはまだ成熟しきってはおらず使いづらい点、使い

    Rustのコードチェックを強力にする3つのツール | κeenのHappy Hacκing Blog
  • とほほのRust入門 - とほほのWWW入門

    Rustとは インストール Hello world Cargoプロジェクト キーワード コメント(//) 値 変数・定数(let, mut, const) 型 基の型(bool, i16, char, str...) 型変換(as) 構造体(struct) 共用体(union) 列挙型(enum) タプル(tup) 配列(array) ベクタ(vec) ハッシュマップ(HashMap) 文字列(&str, String) 演算子(+ - ...) ヒープ領域(Box) スライス(&var[n..m]) 関数(fn) クロージャー(|...|{...}) マクロ(macro_rules!) 制御構文 条件分岐(if) 繰り返し(while) 繰り返し(for) ループ(loop) ループ制御(break, continue) マッチ(match) インプリメンテーション(impl) トレイ

  • WebエンジニアからみたRust

    Web開発者としての興味、関心に基づきRustを端的に紹介し、その強みや弱みについて理解を深める連載。第3回は、Rustの開発生産性を支える言語機能と難しさについて。

    WebエンジニアからみたRust
  • Rust初心者殺しの文法10選 - Qiita

    概要 この記事ではRust初心者が驚いたり混乱させられたりするようなRustの文法を10項目集めてみました。 これらの項目は知らないと理解できなかったりコンパイルエラーに悩まされたりする一見厄介なものたちなのですが、そのような直感的でない挙動を敢えてさせているところには重要な意味が込められていることが多いです。 そのため、これらの項目を通してRustが目指しているものや実現したい機能の一部を垣間見ることができると思います。 1. デフォルトの代入がムーブ Rustの最大の特徴が所有権の概念であることは有名ですが、それでもなお初心者殺しになるのがムーブです。 以下のコードがコンパイルエラーになるメジャーな言語は現状Rustくらいしか無いでしょう。 let mut a = vec![1, 2, 3]; let mut b = a; // ここでaの持つベクタの所有権がbにムーブされ、aは無効に

    Rust初心者殺しの文法10選 - Qiita
  • Rust の最初のステップ - Training

    利用が広がり人気が高まっている新しいプログラミング言語の習得に関心がありますか? ここから始めましょう。 Rust で高速で効果的なプログラムを構築するために必要な知識の基盤を築きましょう。 このラーニング パスの内容は次のとおりです。 Rust コードの最初の行を記述するために必要なツールをインストールする。 Rust の基的な概念を学ぶ。 エラーを処理する方法を学ぶ。 Rust でメモリを管理する。 ジェネリック型と特性を使用する。 パッケージとクレート用のモジュールを設定する。 自動テストを記述して実行する。 コマンドライン プログラムを作成する。

  • Rust Cookbook for Beginners - CADDi Tech Blog

    こんにちは😉 @ryokotmngです。 今日は社内ドキュメントの、Rust初心者向けのクックブックを公開しようと思います。 私自身コードを書くのに四苦八苦していた頃にとても助けられたので、Rustをはじめたばかりの方の参考になれば嬉しいです。 目次 [toc] はじめに この記事では、The Bookに記載されている知識を前提としています。 Rustを全く書いたことがない方は、先に読んでみることをお勧めします。 サンプルコードが結構長いこと、実行環境があった方が良い内容も多いことから、サンプルコードは大体Rust Playgroundのリンクとなっています。 ぜひご自身で修正して遊んでみてください。 単位つきの計算を型で厳格に縛る 例えば複数の長さの単位 (mm, cm, mなど) を扱う場合に、単位が合っていない長さ同士の計算をする場合、単位を揃える必要がありますね。 この時、最終的

    Rust Cookbook for Beginners - CADDi Tech Blog
  • Rust を始めるための資料集 - Don't Repeat Yourself

    かとじゅんさんのお誘いで、私塾匠真堂にて登壇させていただき、Rust に関する話をさせていただきました。ありがとうございました。 今回のセッションを通じて Rust を始めたくなった方向けに、Rust をはじめるための資料をいくつかリストアップしてます。よかったらどうぞ。 プログラミング言語の学習方法について Rust についてまず概観を掴む 文法を学ぶ 何かアプリケーションを実装してみる ちょっと突っ込んだ話を知りたい コミュニティの力を借りる 仲間を見つける 更新履歴 プログラミング言語の学習方法について みなさんは新しいプログラミング言語を学ぶ際、どのように学びますか? 私は、軽く制御構文やデータ型の作り方などを学んだ後は、すぐにアプリケーションを作ってみて、詰まったらリファレンスを参照するといった学び方をしていることが多いです。 逆に、リファレンスをまず眺めて、文法をしっかり把握し

    Rust を始めるための資料集 - Don't Repeat Yourself
  • C++からRustに移行して1年経って思ったこと - Qiita

    はじめに この記事は「プログラミング技術の変化で得られた知見・苦労話【PR】パソナテック Advent Calendar 2020」のために書かれたものです。 僕は去年の11月から一念発起してRustの勉強を初めて趣味同人ゲームを開発しています。元々C++を4年程使っていて「C++最高、みんなC++使おう」とか友人に布教していました。しかし、C++プログラマは「一番自分たちの言語の批判に対して強くなる」と言われるほどC++はよくディスられます。もちろん僕も例外ではありませんでした(笑)。 一応僕もPythonを適当に使うようになってからC++のcppとhppを組み合わせるようなCの名残を感じるところや他言語と比べたときの標準ライブラリの貧弱さ、コードが冗長になりやすい点など使いにくいなあと思いはじめましていました。ですがPythonはあくまでも適当に使ってただけでしたし、一通り書けるJa

    C++からRustに移行して1年経って思ったこと - Qiita