日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年11月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

rustをインストールしてみた。例外がない

カテゴリー: ぷろぐらみんぐ
2022-09-26
rustをインストールしてみた

執筆:2022.09.26
編集:2022.09.26


GoogleはKotlin という言語や低レベルはrustにシフトしているらしく、GoogleのGo言語は、オワコンらしいのですね。

rustもオワコン説もありますが
開発元がmozillaというのがマイナスイメージ、ダメ実装ポイ雰囲気なので長年無視していましたが、最近大手が基幹システムに採用しているということで再注目を浴びているようなので、地位が確立し当面消滅はしないだろうということで触ってみることにしました。

初見

とにかく、rustの他人のコードは読みにくい。

はぁ? っていう感じですね。変な記号だらけで 頭をグルグル ブドウ糖消費しまくって 考えないと理解不能です。

考案した人パズルが好きなのかな?意地悪い性格じゃないかな?

人が読みやすい、わかりやすい構造考えようよ


mod 普通この分野のmodは 割り算のあまり だろう、 moduleを略すなよといいたい。
fnもそう 普通に functionやfuncでいいのに。
度が過ぎる省略は逆に生産性を低下させる。
変な略しているのに、他はたらたら長文、設計思想がめちゃくちゃ。
変なとこで略すと無意識に頭で変換で脳細胞がいくつかが痛むし養分減るからからほんと勘弁だよ

phpみたいに零細企業のアプリ ハカイダーみたいなのがOSSコード破壊するのがいるので、RUSTだとレベルが一定以上必要になるので
読みにくい考える仕様にすることで結果としてバグが減ることに貢献するとは思う。

ただ度が過ぎるとみんないなくなる。
他人のコード読みにくい = メンテナンス難

気になるところは、go言語と同じく外部ライブラリだよりで、バンドルではないのでライブラリのセキュリティや将来性(アップデート)、安全性に疑問が残ります

言語の例外を実装しないのが最近の流行り?

webで情報収集して概要はつかんだので
公式のdocを読みます

変数関係はすぐに理解できました。
その他が問題ですね。へんてこりんな記号だらけで、何がしたいのやら。

.is_ok()

.unwrap
  Result値がOk列挙子なら、unwrapはOkの中身を返します。ResultがErr列挙子なら、 unwrapはpanic!マクロを呼んでくれます。

は?
そんなもの用意するなら最初から例外実装しなさいよ。
エラーで実行止めるわけないだろ。設計したやつばかか?
アプリ終了か終了おすまでエンドレスだろ普通。

rustのコードみたらunwrapだらけ

delphiだと通常 try exceptで例外起きそうな場合は全部例外封殺するので
個人的には、なくてもいいかもと思ったりもしますが
完全にないとなると気持ち悪いですね。想定外のところをスルーされると怖いですね。
というか戻り値にエラー処理強要するなら例外を実装しろといいたい。

.unwrapとか 苦し紛れに後から実装したのでしょうか?

説明書を見ながら標準ライブラリを何か普通に使おうとしたら
 error[E0658]: use of unstable library feature
は? いやいや 仕様 糞すぎるでしょ

コアをフォークして自分色に染めようかと一瞬おもったくらいですよ

それはいいとして

実行ファイルがデカイ!

printしただけで 5MB。
うーん。ですね。
スタンドアロンならいいですが、webだとレスポンスに影響するので読み込みサイズは小さいに越したことはないです。

stripコマンドで少し小さくできるそうです

もやもやしますが SSDの時代なのでこれも気にしないことにします。

ということで、コンパイラをインストールして、サンプルのこんちにはを試して終了となりました。

サンプルだけなら、インストールしなくても 公式サイトのデモページで実行できます。

今のところバッファオーバーランを起こすようなアプリないですし、そういうのは、すべてC#とかdelphiとかスクリプト言語でかけば発生しませんしね。
低レベル操作やREST APIを
クロスコンパイルしたい場合は、便利かもですが、
rustの使い所が現在ないです。


WEBで使いたい場合は、

https://docs.rs/cgi/latest/cgi/
https://docs.rs/cookie/latest/cookie/
https://docs.rs/formdata/latest/formdata/

webフレームワーク を使いたい場合は
 axum
 actix-web

国際化は
https://docs.rs/rust-i18n/latest/rust_i18n/

https://docs.rs/gettext/latest/gettext/

リソース組み込む場合は、
https://docs.rs/resource/latest/resource/

このあたりを使えばサクッとかけるのではないでしょうか。

練習に小さいプロジェクトを移行するのもいいと思いますが
慣れた言語でサクッと短時間で書いたほうがストレスがなくていいですね



Hello world by rust::gettext
use std::fs::File;
use gettext::Catalog;

fn main() {
let mut catalog = Catalog::empty();
let f = File::open("src/ja.mo");
if f.is_ok() {
catalog = Catalog::parse(f.unwrap()).expect("could not parse the catalog");
}

println!("{}", catalog.gettext("Hello, world!"));
}
実行結果
$ cargo run
こんにちは世界!

ブログ内 関連記事: rustをインストールしてみた 例外がない

 関連記事はありません。

ブログ内 関連記事: rustをインストールしてみた 例外がない

 関連記事はありません。
PR

[PR]