Rustに関するhrtshuのブックマーク (6)

  • Rustのトレイト勉強メモ - mizdra's poem

    概要 Rustのトレイトについて勉強したのでメモ. 読んだもの 4.19 トレイト - プログラミング言語Rust 第1版 4.22 トレイトオブジェクト - プログラミング言語Rust 第1版 19.1 トレイトオブジェクトで異なる型の値を許可する - プログラミング言語Rust 第2版 4.31 サイズ不定型 - プログラミング言語Rust 第1版 RustのSizedとfatポインタ - 簡潔なQ 安定化間近!Rustのimpl Traitを今こそ理解する - 簡潔なQ RFC2113 トレイト ポリモーフィズムの一種で, 部分型多相を実現するもの Javaの継承のポリモーフィズムもこれに該当 複数の型に共通する振舞いを抽象化できる よくある間違い 🙅 共通のデータ構造に対する抽象化をすることが目的ではない 🙆 共通の振舞いに対する抽象化をすることが目的 トレイトでは振舞いを定義

    Rustのトレイト勉強メモ - mizdra's poem
    hrtshu
    hrtshu 2021/03/08
  • とほほのRust入門 - とほほのWWW入門

    「ラスト」と読みます。 Mozilla に従事するグレイドン・ホアレが個人的に開発していましたが、のちに Mozilla の公式プロジェクトとなりました。 2021年には、AWS, Google, Huawei, Microsoft, Mozilla がメンバーとなる Rust Foundation に権利が委譲されました。 Rust は「錆(さび)」を意味します。開発チームに自転車乗りが多く、ロゴも自転車のさび付きチェーリングを元にしています。 C言語やC++に変わる言語として開発されました。 Stack Overflow で2016~2019年の間「最も愛されているプログラミング言語」として1位を獲得しています。 Firefox の Servo(HTMLレンダリングエンジン)も Rust で開発されています。 if ... や while ... なども式として評価することができます。

    hrtshu
    hrtshu 2021/03/08
  • rustでCで書いた関数を呼ぶ / Cからrustで書いた関数を呼ぶ - 睡分不足

    rustからCの関数を呼ぶ方法(あるいは,その逆)は公式のドキュメント (https://doc.rust-lang.org/book/ffi.html)に書いてあるのでそれを読めばいいんで すが,自分で書いたCの関数を呼ぶ方法について直接は書いてないのでここに簡単に まとめてみます. rustでCで書いた関数を呼ぶ 以下のCで書いた関数をrustから呼ぶことを考えます. foo.c #include<stdio.h> void foo(){ printf("foo!!\n"); } rustから以下のようにして関数の呼び出しをおこないます. main.rs #[link(name="foo", kind="static")] extern{ fn foo(); } fn main() { unsafe {foo();}; } #[link(name="foo", kind="static

    rustでCで書いた関数を呼ぶ / Cからrustで書いた関数を呼ぶ - 睡分不足
    hrtshu
    hrtshu 2021/03/06
  • Rustのパターンマッチを完全に理解した (2)

    記事はRustその2 Advent Calendar 2018 の17日目の記事です。 blogで Rustのパターンマッチを完全に理解した を書いてから約1年が経過しました。 その間にRustにはパターンマッチ関連の機能もいくつか追加され、以前の内容ではパターンマッチを完全に理解したとは言えなくなってしまいました。 そこで、記事では Rustに最近追加されたパターンマッチ関連の仕様最近追加されたわけではないが、以前の記事で書き忘れた機能について紹介したいと思います。 フィールド名の省略まずは前回書き忘れた事を。 (Version 1.17.0 2017-04-27) からできた事ですが・・・ 次のように構造体をフィールド名と同名の変数で初期化する場合、 1 2 3 4 5 6 7 8 struct Foo { xxx: u8, yyy: u8, } fn create_foo(xx

    hrtshu
    hrtshu 2021/02/23
  • 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
    hrtshu
    hrtshu 2021/02/14
  • Rustのpubについて

    September 1, 2017 外部とは? pubキーワードがつけられたものは外部から参照できる。 この場合の「外部」とは「モジュール外」のことで、基的にはモジュールが境界となる。 ただしもちろんクレートもモジュールを含んでいるので、外部クレートのことも指す。 pubキーワードについて pubの規則は2つのみ。 ・ If an item is public, then it can be accessed externally from some module m if you can access all the item’s parent modules from m. You can also potentially be able to name the item through re-exports. See below. ・If an item is private, i

    Rustのpubについて
    hrtshu
    hrtshu 2020/08/16
  • 1