Rust part10

■ このスレッドは過去ログ倉庫に格納されています
2021/04/02(金) 21:38:04.11ID:L7IeSfpL
Mozilla発のRust言語のスレ

公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

Web上の実行環境
https://play.rust-lang.org

日本語の情報
https://rust-jp.rs/

前スレ
Rust part9
https://mevius.5ch.net/test/read.cgi/tech/1598112455/
2021/05/13(木) 18:39:15.84ID:oBGJ4/nI
Rust for Windowsを欲しがったのはMicrosoft自身だろう
既にVSのインストーラー内部などでRust使用中なので
2021/05/13(木) 19:27:59.33ID:4YggBXb4
rust for windowsで作る本作ってくださいお願いします
597デフォルトの名無しさん
垢版 |
2021/05/13(木) 19:29:13.29ID:vZYCxDQa
>>594 Windows専用のアプリが作りたいならC#でも使えばいいと思うけど...
598デフォルトの名無しさん
垢版 |
2021/05/13(木) 19:30:20.99ID:vZYCxDQa
>>594 Windows専用のアプリが作りたいならC#でも使えばいいと思うけど...
599デフォルトの名無しさん
垢版 |
2021/05/13(木) 19:30:58.76ID:vZYCxDQa
おっとミスって2回書き込んでしまった
失礼
2021/05/13(木) 20:59:04.54ID:vzWwtH6K
>>590
そういう技術者にも射撃練習とかやらせるのだろうか?
2021/05/13(木) 21:40:48.09ID:NNemQTGQ
>>595
もうメジャーな用途で使われてんのか
2021/05/13(木) 21:45:54.80ID:vzWwtH6K
windowsもそろそろNTカーネルを捨てる時期が来るだろうし色々模索はしてるんだろうな
2021/05/13(木) 21:57:03.92ID:WjgS+eLl
もし仮にNTカーネル捨てたとしてLinuxカーネル一択だと思うがな
2021/05/13(木) 22:08:50.47ID:vzWwtH6K
Linuxへの接近はここ数年目立ってるし無くはない話だな

独占市場と過去の互換性を捨てきれるか
仮想環境で過去の互換性を維持することも考えられる
2021/05/14(金) 08:10:59.62ID:FBkeGRqg
>>604
NTカーネル捨てるのはビジネスとして有り得ない。
せいぜいwsl路線を強化してlinuxカーネルを取り込んでいく方向だろ。
2021/05/14(金) 08:37:43.19ID:BI4FO4HO
カーネルを捨てて切り替えるとか出来るわけないだろ
2021/05/14(金) 08:52:11.24ID:9b8NT0Ot
3才児が「ぼくはうちゅうひこうしになるんだ!」って言ってるようなもんだから生暖かく見守ってやれ
2021/05/14(金) 10:22:28.00ID:6SQ932Rj
OSカーネルに対するコンプレックスがすごい人がいるんだろ。
この前のlinuxドライバに関する議論でもそういうの感じるわ
2021/05/14(金) 11:10:24.23ID:bMDjGf5Y
rustがgolangより人気が出ると思っていいですか?
610デフォルトの名無しさん
垢版 |
2021/05/14(金) 11:14:13.19ID:5xLewDJ4
>>609
Goはガーベッジコレクションがあるから?
2021/05/14(金) 11:29:33.68ID:6SQ932Rj
GCとランタイム速度に困ったことのある奴だけ気にすればええ。
2021/05/14(金) 13:23:04.93ID:TMXA3cLH
goとrustどっちが良いか迷うならgoやっといた方が潰しが効くと思う
自分はrust好きだからrust使うが
2021/05/14(金) 14:57:53.07ID:85G96vHL
両方やっとけ
2021/05/14(金) 15:16:48.50ID:678S/iU6
なんでマイナー言語のはずのgoがよく言及されるようになったのかと思っていたら、AWSで使える言語の一つになっていた。
Azureでも使えるようだ。
615デフォルトの名無しさん
垢版 |
2021/05/14(金) 15:45:19.02ID:WB7bczPS
goがマイナー。。。..
2021/05/14(金) 15:46:03.80ID:BI4FO4HO
サーバープログラムみたいな閉じた環境で、出来るここまでと決まってて
要らないこと考えたくないなら制約された言語選んだほうが良いかもな
2021/05/14(金) 15:47:17.23ID:6SQ932Rj
goでほとんど問題ないんだが、それだとrustの出番なくなっちゃうからね。
2021/05/14(金) 16:15:48.73ID:1T0ViQH9
Go言語がマイナーならこの言語はどんだけマイナーになっちゃうのよ
2021/05/14(金) 16:25:56.91ID:Z0ePaP6y
goとrustの違いが分からないような知識量ならgoやった方が不幸にならないかと
2021/05/14(金) 16:48:29.92ID:678S/iU6
参照型はローカル変数にだけ入れて一時的な目的だけに使うことに徹してスクリプト言語の様な書き方だけに専念すればRustはスクリプト言語であるかのように使えて、習得は難しくないかも。
参照型を構造体の中に入れようとしたとたんCやC++では考える必要の無かった難しい問題が生じる。
2021/05/14(金) 17:00:31.58ID:dvkZe6EK
メジャー言語
c java vba
622デフォルトの名無しさん
垢版 |
2021/05/14(金) 17:40:01.47ID:N2rlLeCr
Rustを勉強したら低レベルが理解出来る!!!わけねえだろ
https://www.akiradeveloper.com/post/learn-rust-and-low-level/
623デフォルトの名無しさん
垢版 |
2021/05/14(金) 19:36:04.21ID:5xLewDJ4
例えばWeb系ならばRustがベスト
WasmでGC抱える言語をわざわざ選ぶメリットないからね
2021/05/14(金) 19:44:16.91ID:6SQ932Rj
こういう詐欺師が普通におるからrustは信用できんわ
625デフォルトの名無しさん
垢版 |
2021/05/14(金) 19:51:45.41ID:WB7bczPS
rustに対するコンプレックスすごい人いるね
2021/05/14(金) 20:26:02.54ID:0Bqgd+6M
詐欺師はどこにでもいるからな
とはいえ、webならwasmは正しくないとは思うがwasmならrustは結構正しいと思う
2021/05/14(金) 20:32:01.67ID:6SQ932Rj
wasm,rustでまともに開発してたら絶対そんなこと思わんわ。。どいつもこいつも馬鹿すぎる
628デフォルトの名無しさん
垢版 |
2021/05/14(金) 20:40:33.59ID:WB7bczPS
それで、どんなまともなものを作っているんですか
629デフォルトの名無しさん
垢版 |
2021/05/14(金) 20:46:14.11ID:5xLewDJ4
>>624
とこが詐欺?
あなたはWebブラウザ上のWasmでRustではなくGoを用いているのですか?
2021/05/14(金) 21:18:15.11ID:TMXA3cLH
>>627
それはあなたがまともにrust使えてないだけなんじゃないですかねぇ
2021/05/14(金) 21:22:56.09ID:yxEaYkUD
話が具体的で説得力がある
2021/05/14(金) 21:38:43.40ID:2w1FBHD8
>>572
形式的に書けているのは構文規則だけで
意味規則は自然言語で書かれているやんけ
2021/05/14(金) 22:59:38.34ID:R2Ezzb7N
「Rustはスクリプト的に書ける」とかいう謎の言葉言う奴沢山いるけどなんぞ?
同一人物か?
2021/05/14(金) 23:07:50.74ID:TMXA3cLH
我々が知らないところでevcxrが流行ってるのかもしれない
2021/05/14(金) 23:23:46.43ID:72ZodHJE
google謹製のREPLね
エベクサ?
2021/05/15(土) 02:09:59.05ID:BphhllcO
>>633
Rubyと同じようなメソッドチェーンを使ったコードを見かけたから。
2021/05/15(土) 03:17:16.69ID:vuo6fbRn
ドットでメソッド呼び出しする言語は大概そういうライブラリ設計あるでしょ
2021/05/15(土) 11:05:39.24ID:DTE+piln
>>637
C++やJavaでは見たこと無い。
JSでも余り見かけない。
2021/05/15(土) 11:12:58.76ID:Y+SvMVkX
そもそもメソッドチェーンって「スクリプト的」なのか?
2021/05/15(土) 11:24:14.14ID:C+CtGbiq
前々からヤベェやつだとは思ってたが
レベルの低さが想像をはるかに超えてた
2021/05/15(土) 11:27:04.30ID:MS0dCBGJ
c言語みたいにcsvパーサーも自前で用意するような環境だとそらスクリプト的だろうね。
2021/05/15(土) 12:00:43.05ID:A3vQNOxR
unityとかUEがrustに対応しないかなあ
2021/05/15(土) 12:00:58.11ID:ZgJC7yuF
cargoみたいなパッケージマネージャがあるのもスクリプト的な要素のうちなのか?
2021/05/15(土) 12:10:16.46ID:MS0dCBGJ
cargoは低レイヤー慣れてる人からすれば邪魔でしかないけどね。
2021/05/15(土) 12:20:50.35ID:DTE+piln
SourceforgeなどでRustが好きといっている人の大部分はレベルが低いだろう。
そもそもこの世の中、大多数から受けるものにレベルが高いものがあったためしがない。
好きな言語ランキング上位のJS、Pythonも初心者向け言語であることは誰もが認めることだし。
2021/05/15(土) 12:40:11.21ID:UqP25wMI
sourceforge???
stackoverflowの調査かなんかと勘違いしたの?
2021/05/15(土) 12:41:57.93ID:ZgJC7yuF
>>644
どういうこと?ベアメタル向けでもcargo使うのが主流だと思っていた
2021/05/15(土) 12:47:56.99ID:ZgJC7yuF
>>645
使用者のレベルの高低と言語のレベル(?)の高低は一致するという主張かな?

言語のレベルが高いというのが最先端のテクノロジーを取り込むという意味ならrustの目指すところではないと思う
他の言語で実証されたコンセプトを取り込むと宣言してる(た?)はず
高レベルな言語が必要な人はこんな普及言語じゃなくてもっと尖った言語を使うか自分で作るべきなのでは
2021/05/15(土) 12:49:38.36ID:DTE+piln
>>646
ああ、そっちだった。
Stackoverflowも来てる人の頭の良さは一般大衆と同じくらいだから同じ。
2021/05/15(土) 12:53:14.42ID:DTE+piln
>>648
そういうことじゃなくて、
・Rustをほとんど使っても見てないのに勝手に「好き」と言っていることが分かってる。
・Stackoverflowのような沢山の人が集まる場所の調査では、必ずJSやPythonのような初心者向けの言語が人気となるわけだから、そこの人々が好きだと思う言語は、JSやPythonのような感覚で使えると勝手に思い込んである蓋然性が高い。
 ただし、現実はRustは実際には使ってないのに勝手に言っている。
ということ。
2021/05/15(土) 13:20:44.67ID:YOv93GRR
stackoverflowの調査の話なら、調査内容を勘違いしている
あれは「今Rustを使っている人が、今後もRustを使い続けたいかどうか」のアンケート結果をmost lovedと言ってるだけ
だからJSやPythonユーザの意見は入ってない
そもそもloveって言葉に語弊があるし、日本語にしたときに「人気の」とかなって余計訳がわからなくなってる
2021/05/15(土) 13:25:20.53ID:YOv93GRR
たぶん「最も嫌嫌使っている人が少ない言語」みたいなのが正確な気がするな
2021/05/15(土) 14:15:44.60ID:MW7lNw7H
「今使ってる人が次も使いたいと思うか?」ってJetBrainsの調査でも毎回入れてくる項目だな
海外のアンケートではよく見るやつ
2021/05/15(土) 14:17:03.39ID:DTE+piln
>>651
もし前半の通りなら、今Rustを使ってる人なんて極一握りの物好きだけだから
「love」なのは当たり前で調査結果が意味が無い。
2021/05/15(土) 14:19:45.06ID:eXXN4CKf
一生でどれか一つのプログラミング言語しか覚えられないとして
Rust選ぶ人いますか?

選択したとして別にその言語がいきなりマスターできるわけでなく
ただその言語しか覚えられないというだけですが
2021/05/15(土) 14:23:36.58ID:DTE+piln
今rustを使ってる人って、自ら進んで使おうとした人に限られるから
嫌いな人がほとんどいないのは当たり前だから、調査結果にバイアスが
掛かりすぎていることになるな。
2021/05/15(土) 15:05:35.65ID:pVi51x8H
そういえば C++ でメンバ関数の評価順序に関して設計者も気づいてなかった考慮漏れが見つかった
(よくあるパターンが実際には未定義だった) って話があったな。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0145r0.pdf
C++17 で修正されているはずだけど。

宣言的な表現や関数的な表現をプログラミング言語に取り込む試みは数多いが
現実は順序からは逃れられぬのだ……。
2021/05/15(土) 15:16:25.44ID:HcoKJY+/
Rustがスクリプト的に書けるかどうかはおいといて、
個人用のツール書く言語をPythonからRustに乗り換えたっつー話は一応あるな
https://hayatoito.github.io/2017/faq/#programming-language
2021/05/15(土) 15:20:52.26ID:DTE+piln
>>658
Googleがnode.jsで書いていたものをRustにしたと聞いたぞ。
2021/05/15(土) 15:23:50.02ID:TrqVEcq2
全部書き直すのは逆に効率悪そう
速度的にキツイ場合のみでいいんじゃないか?
2021/05/15(土) 15:32:34.68ID:H/3gPTTR
どちらかといえば速度よりも変更頻度が動機になると思う
静的チェックツールも増えてはいるけどコンパイル型はいじる時の安心感が違う
2021/05/15(土) 15:37:59.52ID:pVi51x8H
>>660
言語を跨いで呼出すときはその境界で色々な処理が挟まったりもするので、
まだらに入り乱れるような形になるとそれはそれで実行性能の足を引っ張ることもある。
状況次第なので一概には言えないけど、言語を変更すると決めたなら
そこそこ大きい単位で乗り換えるのが妥当な場合は結構あると思うよ。
2021/05/15(土) 17:32:17.46ID:jwQMP5Oj
>>661
それはあるね
個人用のツールだとそんなに真面目にテストも書かないから
動的型だと忘れた頃に改修したくなって詰む
2021/05/15(土) 18:53:39.15ID:IpomZGOJ
>>642
MSがdotnet対応のRust#出したらUnityワンチャンあるんやない?
2021/05/15(土) 19:10:58.08ID:Y+SvMVkX
そこはRust/CLIで。
2021/05/15(土) 21:52:45.98ID:TrqVEcq2
GCのあるrustに存在意義などない
2021/05/15(土) 22:13:28.16ID:Y+SvMVkX
GCとデストラクタが共存するC++/CLIはなかなか興味深い言語だった。
2021/05/16(日) 11:00:47.47ID:9EXRd3vl
RustのGCって初期はまた復活されるかもーみたいなノリじゃなかったっけ?
2021/05/16(日) 11:12:01.38ID:SPtqbmz9
RC関連についてはやるとか?
2021/05/16(日) 12:07:45.66ID:MDYO1Tug
@ pointerとか ~ pointerとかあった頃の話?
2021/05/16(日) 15:06:48.66ID:JH7fFMWR
>>665
確かにそっちか
>>666
GCがあるRustって言うよりはunsafeを外部リンクで呼び出してるようなもんだろ
2021/05/17(月) 10:53:44.01ID:ZSkTvtbm
rustが覇権を取るにはPHPみたいにドキュメントの翻訳をたくさん作ること
そしてサンプルコードを盛り込むこと
2021/05/18(火) 19:40:20.00ID:A1yOEMnk
>2021 Editionは2021年10月にリリースされる。今回のエディションは「Rustの使用感を大きく改善する」ものになるという

あんまり前にこんな発表しないでほしい
やる気なくなる
2021/05/18(火) 19:44:35.79ID:Gj41gD2H
>>673
ちゃんと発表資料見れば分かるけど、大して使用感変わらんよ
クロージャー使いまくりの人が一番恩恵を受けるかな
2021/05/18(火) 20:19:55.73ID:Z0RWJbQc
所有権は移動するときのほうにマークが出るべきなんじゃあ
2021/05/19(水) 07:47:56.56ID:X700JkCT
まぁコストかかるのはコピーだし
2021/05/19(水) 08:05:05.13ID:o3bqBTNO
Rustの真似をしようとする言語がないのがふしぎだ
2021/05/19(水) 12:30:25.52ID:HmkTJiD6
https://en.m.wikipedia.org/wiki/Rust_(programming_language)
wikipedia見ただけだけど Crystal, Elm
2021/05/19(水) 12:30:46.25ID:HmkTJiD6
など影響を与えた言語は列挙されてた
2021/05/19(水) 12:42:47.10ID:9T1L9lvJ
>>678
Elmのどこが?と思ってソースを読んだら
関数型言語なら大体持ってるEither型の名前を Result, Ok, Error にしたところがRust由来とな

うーむ持ってきたのは名前だけなのにInfluencedか
2021/05/19(水) 12:59:40.27ID:u9Tr9lyP
Gleam
https://gleam.run/book/tour/index.html

OwnershipやLifetimeの考え方を採用した言語はまだ聞いたことがない
2021/05/19(水) 13:11:21.07ID:bDX8SBSl
所有権の考え方を採用している言語としてはC++などがあります
2021/05/19(水) 14:00:04.90ID:NOe9g/vN
まあインスタンスの共有については何らかの言語サポートが入ってもおかしくないかもね
2021/05/20(木) 01:09:22.49ID:WwVMFHF+
DにもOwnership入ったとか小耳に挟んだだけなら
2021/05/20(木) 17:03:02.09ID:VKAk8Olu
https://forest.watch.impress.co.jp/docs/news/1325564.html
凄いね
2021/05/20(木) 17:06:31.55ID:13olK3Lw
>>685
UIがReactというのが残念
2021/05/20(木) 18:20:18.69ID:PiC1UW/o
逆に何ならいいんだよ
2021/05/20(木) 18:33:43.55ID:UXe9/StR
GUIフレームワークをRustで作るうまみあまりなさそう
2021/05/20(木) 19:39:25.12ID:QrP75Wi1
Rustで作ってあるなら絶対大丈夫だな!
2021/05/20(木) 22:57:01.82ID:HbCDuKW4
設計がクソだとダメ
ダメなヤツはなにやってもダメ
691デフォルトの名無しさん
垢版 |
2021/05/21(金) 11:45:49.77ID:r1IBz1vL
>>538
(1)もちろん例外を使わずとも関数呼び出し等がエラー値を返すことで全て実現できます

(2)ところがエラー値が返ってくると毎回if文やmatch等でエラー時はそこですぐreturnする等の処理を書く必要があって面倒かつコードが醜いため例外の使用が好まれました

(3)Rustでは関数の返り値型をResult<T,E>とすることに加えて「?」オペレーター(旧try!マクロ)を使うことで(2)の処理を自動化しました

つまり関数等呼び出し毎にifやmatch等で返り値エラーチェック&returnの記述をしなくても末尾に「?」を記述するだけで済みます

これでチェーンも出来て具体的には
b = a.hage()?.hige()?.hoge()?
と書くだけでhage()でエラーが返れば早期エラーreturnしますしhige()やhoge()でエラーでも同様です
関数の返り値型がResult<T,E>であることが使用条件です
これはもちろん正常値の<T>型とエラー<E>型のenumです

これらにより関数を多段に深く呼び出していても深い所でのエラーがすぐにreturnを多段にしてエラーが戻って来ます
したがってRustでは例外を使わなくても困らないのです
692デフォルトの名無しさん
垢版 |
2021/05/21(金) 13:37:02.96ID:J6y23PLS
すまんrust新参者なんだが、Rust By Exampleのコードいじって勉強してて、以下のコードが疑問に感じられた。
以下のプログラムはmain関数内のif文は実行されないとは明らかなんやが、それでもsubの行でいわゆるuse-after-freeのコンパイルエラーが出る。
これはif文が実行されなくてもdropは実行されるということなんですか?
下のコードみたいにuse-after-freeになるかならないかがif文の条件満たすかどうかによって決まるようなプログラムでも
rustでは一緒くたにuse-after-freeになるとみなされるってことなんですね?
そう考えればそこまで賢くないコンパイラですね
struct Droppable {
id: &'static i8,
}

impl Drop for Droppable {
fn drop(&mut self) {
println!("> Dropping {}", self.id);
}
}

fn sub(d: &Droppable) {
if *d.id == 0 {
drop(d);
println!("> Test {}", d.id);
}
}
fn main() {
let _a = Droppable { id: &0 };
if *_a.id == 1 {
drop(_a);
}
sub(&_a);
}
693デフォルトの名無しさん
垢版 |
2021/05/21(金) 13:40:53.52ID:J6y23PLS
ちなみにコンパイルエラーも貼っておく

Compiling playground v0.0.1 (/playground)
error[E0382]: borrow of moved value: `_a`
--> src/main.rs:22:9
|
18 | let _a = Droppable { id: &0 };
| -- move occurs because `_a` has type `Droppable`, which does not implement the `Copy` trait
19 | if *_a.id == 1 {
20 | drop(_a);
| -- value moved here
21 | }
22 | sub(&_a);
| ^^^ value borrowed here after move //ここでuse-after-free errorが発生!

error: aborting due to previous error

For more information about this error, try `rustc --explain E0382`.
error: could not compile `playground`

To learn more, run the command again with --verbose.
694デフォルトの名無しさん
垢版 |
2021/05/21(金) 13:44:28.52ID:J6y23PLS
Compiling playground v0.0.1 (/playground)
error[E0382]: borrow of moved value: `_a`
--> src/main.rs:22:9
|
| let _a = Droppable { id: &0 };
| -- move occurs because `_a` has type `Droppable`, which does not implement the `Copy` trait
| if *_a.id == 1 {
| drop(_a);
| -- value moved here
| }
| sub(&_a);
| ^^^ value borrowed here after move //ここでuse-after-free errorが発生!

error: aborting due to previous error

For more information about this error, try `rustc --explain E0382`.
error: could not compile `playground`

To learn more, run the command again with --verbose.

見やすくした
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況