SSブログ

同じメソッドで異なる型を返す(Rust) [Rust]

データーベースドライバーを Rust で書きたい、というところから
「同じメソッドを呼んだら文脈によって返す値の型(値)を変えたい。そんな動的プログラミング言語みたいなことできるの?」
と思い、これ https://nakagami.blog.ss-blog.jp/2021-08-15 を発見したんだけれども、どうもこれじゃなくて・・・

こういうふうに、結果の型をパラメータにする trait を定義するとやりたいことができるみたい。
https://gist.github.com/nakagami/d6beaf223bbee2e4d6780d7438917dd4

ライフタイム注釈も、型を制限してるようなもんだし、型パラメータ難しい。
コメント(0) 
共通テーマ:日記・雑感

Rust の型変換 [Rust]

どうやら、自分がやりたいことは
「型パラメータ T が渡されきたら、 T型の値を得たい」
ということらしい。

まだ理解しきれてないが、ここらへんを見てよく考えるといけそう
https://zenn.dev/take4s5i/articles/rust-type-convertion#into%2Ffrom
後で見る
std::convert::From トレイトを実装する必要がありそう。
std::convert::Into トレイトを実装する必要があるかは、まだわかってない。
コメント(0) 
共通テーマ:日記・雑感

GitHub Actions で、Rust のプロジェクトをテストする [Rust]

GitHub Actions は、使ったこと無かったのだが、重い腰をあげてやってみる。

https://github.com/nakagami/awabi の Actions タブを開くと
「Rust」の workflow が suggest されているので
「Set up this workflow」を押下「Start commit」→「Commit new file」
で master ブランチにファイル追加
rust-github-actions.png
awabi/.github/workflows/rust.yml が作成され、しばらくすると、テストが実行され、ステータスが Failure になる。
なるほど、ファイルが追加されたら、他になにか設定しなくても動くんだ。
rust.yml の内容から、 master ブランチの push と pull request の時に実行されるということはわかった。

Fail するのは、 mecab-ipadic-utf8 が無いからなので、 rust.yml に、 sudo apt install mecab-ipadic-utf8 を追加
https://github.com/nakagami/awabi/commit/59221cb4f47dbd6ebf016928f90388e2662a443e

これで Success するようになった。

Rust のプロジェクトは cargo test でテストするように決まっているので、 GitHub Action での CI は、このパターンでいけそう。
コメント(0) 
共通テーマ:日記・雑感

よちよち Rust [Rust]

最近 Rust の勉強をしている。
Amazon の購入履歴を見ると、昨年の 8/1 に Rust の本を買ったので、最近というのは、ここ10ヶ月ということらしい。

最初から読んで、途中でよくわからなくなって挫折して、しばらく経つと前書きから読み返すということを繰り返している。
2/3くらいまでは読んで、基本的なことは理屈としてはわかってきたので、コードを書いてみているのだが、これがまた難しい。
最初は、ほんの数行書いてコンパイルして
「この、コンパイルエラーは、どうやって直せばいいんだろう・・・」
と悩んでいた。
最近ようやく、
「Rust のコンパイルエラーメッセージは親切だな」
と思える程度にまでは来た。

Stack Overflow のサーベイで Rust が、好きなプログラミング言語の1位なんだそうな
https://mag.osdn.jp/20/06/01/160000
https://www.publickey1.jp/blog/20/stack_overflow5javascriptrust.html
https://news.mynavi.jp/article/20200601-1045348/

最近、いろんなサーベイで、好きなプログラミング言語とか、今後も使いたい言語とかで、Rust が上位に上がっている。
みんながいいっていうから頑張ってるけど、みんな、こんな難しいプログラミング言語、使いこなせてるの?
実際、 OS とか、CPUの emulatorを書いてる人がいるらしく、世の中、頭の人が多いんだなぁ
コメント(0) 
共通テーマ:日記・雑感