Rust

Rust製CLI作成支援パッケージSeahorseの紹介

めでたくメジャーバージョンがリリースされたので、 僕が最近ちょっとだけコミットしたRustのパッケージの紹介をします。 Seahorse github.com Seahorseは、RustでCLIツールを制作するときに助けになるパッケージです。 CLIツールを作る人がSeahorseを使うこ…

タプル構造体を構造体のように扱うことはできても逆はできない

#[derive(Debug)] struct Data(i32); fn main() { println!("{:?}", Data{ 0: 0 }); // => Data(0) } これは合法なのに #[derive(Debug)] struct Data2 { 0: i32 } fn main() { println!("{:?}", Data2(4)); } これはコンパイルエラーになってしまう という…

std::any::type_name はバッチリ型名を返してくれるわけではなさそう

qiita.com こちらを見て本当にクロージャかなと色々試していて気づいたこと (記事の内容はあんまり関係ありません) std::any::type_name::<T>() は型引数の名前を返してくれます。 のでこんな形で値を渡すことで、その値の型が(文字列で)得られます fn prin</t>…

パターンマッチ中の `..`

mdbookのコードを読んでいて、なんじゃこの記法は、となったコードがあったので、 理解してしまえばなんて無いことですが、しばらく悩んだし戒めのために書きます 簡略化して書くとこんなコードです enum Enum { A(u8, u8, u8), B } macro_rules! some_macro…

mdBookに変なPRを出した

mdBookという、gitbookのrust版みたいなOSSがあります。 github.com マークダウンをつっこむとサイト(やpdfやepubその他レンダラを書けば何でも!)を出力してくれるものです。 主にドキュメントサイトを生成するのに使われていると思います。 Rustの公式ド…

Zero-SizedなオブジェクトをVecに入れてみる

Zero-Sizedなオブジェクトは、メンバを持たない構造体から作ることができます。 struct Blank; // struct Blank {} と同じ fn main() { println!("{}", std::mem::size_of::<Blank>()); // => 0 } https://play.rust-lang.org/?version=stable&mode=debug&edition=2</blank>…

String and &str in rustについて

github.com My first ever zine, titled "String and &str in Rust" and featuring many cats!✨You can print it from here -> https://t.co/X1xQWrqzpC pic.twitter.com/qV68ZaDjZz— Jeena Lee (@thejeenalee) September 17, 2019 Twitterでみかけたこちら…

std::i32::MAX vs i32::max_value()

std::i32::MAXとi32::max_value()、重複した役割のものがなぜ存在するのかなーと思ってちょっと調べていたことをメモ