公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
公式ドキュメント
https://www.rust-lang.org/learn
Web上の実行環境
https://play.rust-lang.org
※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※次スレは原則>>980が立てること
前スレ
Rust part19
https://mevius.5ch.net/test/read.cgi/tech/1673926892/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
Rust part20
■ このスレッドは過去ログ倉庫に格納されています
2023/03/03(金) 00:45:28.73ID:vTVY069B
543デフォルトの名無しさん
2023/06/05(月) 18:33:55.89ID:/S79/CE3 Rustの良い面が多面的であり
どの面を重視するかは人によって様々だが
Rustに行き着く点では同じだ
どの面を重視するかは人によって様々だが
Rustに行き着く点では同じだ
544デフォルトの名無しさん
2023/06/05(月) 18:54:42.77ID:M00yb3VA まーたクソみたいな複オジ節が連投されてんなw
545デフォルトの名無しさん
2023/06/05(月) 20:04:46.68ID:5pPw8Ntr546デフォルトの名無しさん
2023/06/05(月) 20:12:05.32ID:sHX0h5A1 ML系言語やればいいよ思うよ
547デフォルトの名無しさん
2023/06/05(月) 20:50:22.82ID:UzHiRmXo 先日のStableのリリースでやっとOnceCellが安定化されたんですね。
Lazyはまだっぽいけど嬉しい。
Lazyはまだっぽいけど嬉しい。
548デフォルトの名無しさん
2023/06/06(火) 02:17:44.23ID:puQ29V2U 去年から始めたけど、ここ2~3年で標準化された機能が必須に感じるので、最適なタイミングで始められたなと思う
549デフォルトの名無しさん
2023/06/06(火) 07:22:24.29ID:o6YEf8qO550デフォルトの名無しさん
2023/06/06(火) 07:54:49.95ID:8OPdxEUp 書き心地も良いが開発効率の高さだな
スクリプトで済むのはスクリプト言語を使うとして
プログラミングするならRust一択となった
スクリプトで済むのはスクリプト言語を使うとして
プログラミングするならRust一択となった
551デフォルトの名無しさん
2023/06/06(火) 10:54:53.70ID:6c57W+Lm 何の数字を比べて 開発効率が上がったと言ってるんだ?
552デフォルトの名無しさん
2023/06/06(火) 11:12:32.78ID:o1s33Rlj ありがとうRustAnalyzer
553デフォルトの名無しさん
2023/06/06(火) 19:31:13.22ID:mkQOe4X2 >>545
それは反対だ。副作用がない関数コールでOptionやResultはオーバースペックで邪魔でしかない、Rustだって-> i32とか出来るのは理由があるからで意味のないResultラッピングしてしまうのは邪悪でしかない。
それは反対だ。副作用がない関数コールでOptionやResultはオーバースペックで邪魔でしかない、Rustだって-> i32とか出来るのは理由があるからで意味のないResultラッピングしてしまうのは邪悪でしかない。
554デフォルトの名無しさん
2023/06/06(火) 19:35:17.52ID:5BE6aCuJ555デフォルトの名無しさん
2023/06/06(火) 21:19:28.43ID:n1ZdC4n5556デフォルトの名無しさん
2023/06/06(火) 22:39:17.85ID:lWt7Neg4 >>553
絶対にエラーが起きない場合も含めてインターフェースの戻り型を統一しなきゃいけない時に、
Resultで統一することで非効率になるのを恐れているのだと思うけど、
エラーが起きない場合の実装のみエラー型をstd::convert::Infallibleつまり戻り型をResult<Xxx, Infallible>とすれば、
最適化されるため気にせずResultラッピングのコードを書いても大丈夫だよ
絶対にエラーが起きない場合も含めてインターフェースの戻り型を統一しなきゃいけない時に、
Resultで統一することで非効率になるのを恐れているのだと思うけど、
エラーが起きない場合の実装のみエラー型をstd::convert::Infallibleつまり戻り型をResult<Xxx, Infallible>とすれば、
最適化されるため気にせずResultラッピングのコードを書いても大丈夫だよ
557デフォルトの名無しさん
2023/06/07(水) 02:16:00.81ID:pdPmNlas Rustは文字列やネット系のライブラリが充実しているため、書き易いと
感じるのかもしれないが、言語自体の書き心地は悪い。
感じるのかもしれないが、言語自体の書き心地は悪い。
558デフォルトの名無しさん
2023/06/07(水) 02:25:13.42ID:VU6rdBvm >>557
スクリプト以外でRustより書き易い言語ある?
スクリプト以外でRustより書き易い言語ある?
559デフォルトの名無しさん
2023/06/07(水) 02:41:53.93ID:pdPmNlas >>558
色々有るな。例えばJavaやC#とか。
色々有るな。例えばJavaやC#とか。
560デフォルトの名無しさん
2023/06/07(水) 02:52:36.10ID:bLVp0x6K Javaは言語が古すぎ
機能不足で書くのが苦痛
今どきの言語を知っていてJavaを書きやすいと言う人はいない
機能不足で書くのが苦痛
今どきの言語を知っていてJavaを書きやすいと言う人はいない
561デフォルトの名無しさん
2023/06/07(水) 03:13:16.86ID:PASEDR7I お前ら本当にシステム屋か?
“描きやすい”ってのは人それぞれで定義が曖昧やん
なぜその定義や認識の統一をせずに議論始めるん?
“描きやすい”ってのは人それぞれで定義が曖昧やん
なぜその定義や認識の統一をせずに議論始めるん?
562デフォルトの名無しさん
2023/06/07(水) 03:15:24.35ID:PASEDR7I 例えばだけどJavaは古くてというが昔からJavaやってるやつは慣れから書きやすいと感じる
Java歴15年
Rust歴1年
とかで比べたらどっちに軍配上がるか分かるやん
Java歴15年
Rust歴1年
とかで比べたらどっちに軍配上がるか分かるやん
563デフォルトの名無しさん
2023/06/07(水) 03:23:10.65ID:2dySsIAz 議論を成立させるのが無理なの分かってるから隔離スレでやれっつってるんですよ
564デフォルトの名無しさん
2023/06/07(水) 03:35:20.85ID:PASEDR7I まあ言語スレで具体的なコードも出さずに議論しちゃう馬鹿ばかりだしな
せめて○○言語じゃこう書くけどRustではこう書ける
だから書きやすいってぐらいはして欲しいもんだ
せめて○○言語じゃこう書くけどRustではこう書ける
だから書きやすいってぐらいはして欲しいもんだ
565デフォルトの名無しさん
2023/06/07(水) 03:35:24.21ID:mYje0a9y >>562
それは言語の書きやすさではなく
その個人が慣れか不慣れかだろ
言語の書きやすさはその言語に十分慣れた上で
言語の機能が不足していて書きにくい点がないかどうかなどで決まる
その比較例だとJavaとRust両方に慣れた人たちにとって全員がJavaに❌をつける
それは言語の書きやすさではなく
その個人が慣れか不慣れかだろ
言語の書きやすさはその言語に十分慣れた上で
言語の機能が不足していて書きにくい点がないかどうかなどで決まる
その比較例だとJavaとRust両方に慣れた人たちにとって全員がJavaに❌をつける
566デフォルトの名無しさん
2023/06/07(水) 04:14:00.36ID:PASEDR7I 別の言語を長くやってても面倒臭いなって思う点は出てくるじゃん
例えばJavaやってるとC#のあの機能欲しい
なんでJavaには追加されないんだろとかさ
例えばJavaやってるとC#のあの機能欲しい
なんでJavaには追加されないんだろとかさ
567デフォルトの名無しさん
2023/06/07(水) 04:15:46.17ID:mYje0a9y だから全員がJavaに✕をつける
568デフォルトの名無しさん
2023/06/07(水) 10:36:40.93ID:o7otWeXk >>562
わかるやん、てあなたが勝手に言ってるだけですやんw
わかるやん、てあなたが勝手に言ってるだけですやんw
569デフォルトの名無しさん
2023/06/07(水) 15:06:17.70ID:3M1fBRd0 でも、多数決では、Rustが最下位なんだよな。
570デフォルトの名無しさん
2023/06/07(水) 15:44:42.75ID:3M1fBRd0 Rustの問題点を指摘すると、「それはあなたが ・・・」
「馬鹿だから」「老害だから」「じじいだから」「化石みたいな人だから」
みたいな事言って人いるけど、それは
「若くて頭のいい人々が使うんだから、老害/馬鹿は黙っとけって」ことになるが、
それでは一般人に普及する言語には成れないであろう。
そもそも、高級言語の目的とは、簡単に安全にやりたいことが出来ると言う
ことであり、しかも、一部の人を除いては簡単にも思えないようなものであっては
普及は遠い。
「馬鹿だから」「老害だから」「じじいだから」「化石みたいな人だから」
みたいな事言って人いるけど、それは
「若くて頭のいい人々が使うんだから、老害/馬鹿は黙っとけって」ことになるが、
それでは一般人に普及する言語には成れないであろう。
そもそも、高級言語の目的とは、簡単に安全にやりたいことが出来ると言う
ことであり、しかも、一部の人を除いては簡単にも思えないようなものであっては
普及は遠い。
571デフォルトの名無しさん
2023/06/07(水) 15:54:04.41ID:3M1fBRd0572デフォルトの名無しさん
2023/06/07(水) 16:20:31.76ID:QsxM8200 書きやすいか否かという話より、rustは意外にタイピング量は多い思想は考え直してほしい。
std::fmtなどの「::」だとか引数名・変数の後の型の「:」だとか、むろんmutも、戻り値の「->」もなぜ引数の「:」と戻り値の「->」を同じにしなかったのか?思想面が分かる人に教えてほしい。
ほかにもなぜマクロ呼び出しに「!」をいちいち付けるのかとか、関数はfnやpubで省略しているのに?アトリビュートも#[xxx]と異様に見える。なぜ@xxxでは駄目だったのか?
まあセミコロンはC/C++からの移行を重視したのだろうけど。言語をディスってる訳じゃなく完全論破されることを願う
std::fmtなどの「::」だとか引数名・変数の後の型の「:」だとか、むろんmutも、戻り値の「->」もなぜ引数の「:」と戻り値の「->」を同じにしなかったのか?思想面が分かる人に教えてほしい。
ほかにもなぜマクロ呼び出しに「!」をいちいち付けるのかとか、関数はfnやpubで省略しているのに?アトリビュートも#[xxx]と異様に見える。なぜ@xxxでは駄目だったのか?
まあセミコロンはC/C++からの移行を重視したのだろうけど。言語をディスってる訳じゃなく完全論破されることを願う
573デフォルトの名無しさん
2023/06/07(水) 16:59:17.90ID:MyTs/b4R 細かい構文は互換性やらが重視されて一定の思想が徹底してないことも多いでしょうよ
暇ならissue掘り返してみればいい
とりあえず::はC++由来でattributeはC#由来
暇ならissue掘り返してみればいい
とりあえず::はC++由来でattributeはC#由来
574デフォルトの名無しさん
2023/06/07(水) 18:36:58.20ID:Rjy197CJ Rustが難しいと感じるのは経験不足だと思うわ
困難に立ち向かった経験が少ない
困難に立ち向かった経験が少ない
575デフォルトの名無しさん
2023/06/07(水) 18:50:18.58ID:JMx9Ekkp >>572
マクロ呼び出しに「!」を付けるのはコンパイラと人間の両方がマクロ呼び出しをすぐに識別できるようにするため
コンパイラの実装方法によっては無くすことは不可能ではないだろうけど効率が悪くなるし実装も難しくなる
最初は俺も無いほうが良いと思ってたけど
「!」をつけないといけないから不必要にマクロを作らなくて
結果的にメンテしやすいコードにつながってるので考え方変わった
マクロ呼び出しに「!」を付けるのはコンパイラと人間の両方がマクロ呼び出しをすぐに識別できるようにするため
コンパイラの実装方法によっては無くすことは不可能ではないだろうけど効率が悪くなるし実装も難しくなる
最初は俺も無いほうが良いと思ってたけど
「!」をつけないといけないから不必要にマクロを作らなくて
結果的にメンテしやすいコードにつながってるので考え方変わった
576デフォルトの名無しさん
2023/06/07(水) 19:54:20.54ID:6MUTDsao >>572
タッチタイピングできない人?
もしくはVSCode使ってない人?
文字数なんて気にするやつ初めて見たぞ
::はC++由来
->はHaskell由来だよ
マクロの!や?はおそらくRuby由来だが別の意味で使ってる
#[]はわからん
タッチタイピングできない人?
もしくはVSCode使ってない人?
文字数なんて気にするやつ初めて見たぞ
::はC++由来
->はHaskell由来だよ
マクロの!や?はおそらくRuby由来だが別の意味で使ってる
#[]はわからん
577デフォルトの名無しさん
2023/06/07(水) 20:20:10.95ID:MyTs/b4R >>576
煽るなら最低限公式ドキュメントの内容はすべて頭に入れてからにしたまえ
https://doc.rust-lang.org/reference/influences.html
>>572が言いたいのはTypeScriptのごとくfn f(x: T): Uとかけないのは何故かということだろう
trait boundとの曖昧性が生まれる状況があるのかなと思ったが、ちょっと具体例が思いつかないので違うかも
煽るなら最低限公式ドキュメントの内容はすべて頭に入れてからにしたまえ
https://doc.rust-lang.org/reference/influences.html
>>572が言いたいのはTypeScriptのごとくfn f(x: T): Uとかけないのは何故かということだろう
trait boundとの曖昧性が生まれる状況があるのかなと思ったが、ちょっと具体例が思いつかないので違うかも
578デフォルトの名無しさん
2023/06/07(水) 21:01:38.64ID:MyTs/b4R というかRustは元々めっちゃタイプ数気にする系言語だったんだよねむしろ
1.0以前にはreturnがretだった頃もあった
今日まで残るfnとかimplとか、比較的新しいdynもそうだが
実際かなり略したがりな言語ではあると思うよ
1.0以前にはreturnがretだった頃もあった
今日まで残るfnとかimplとか、比較的新しいdynもそうだが
実際かなり略したがりな言語ではあると思うよ
579デフォルトの名無しさん
2023/06/07(水) 22:03:46.79ID:juXVB+W2 >>572
あらゆる言語で同じことが言えるが
基本的な文法記述方法を考え直してほしいと要求しても
今から変わるわけがないし変わったら利用者が困る
無意味な破壊的な要求をしていることになる
タイピング量が多いといってもわずかな誤差であり
ほとんどの記述方法は既存のメジャーな言語で実績があるものと同じ
現在のメモリCPU開発環境からも余裕で許容される範囲でもある
個人的に気に入らないと主張しているのと変わらない
あらゆる言語で同じことが言えるが
基本的な文法記述方法を考え直してほしいと要求しても
今から変わるわけがないし変わったら利用者が困る
無意味な破壊的な要求をしていることになる
タイピング量が多いといってもわずかな誤差であり
ほとんどの記述方法は既存のメジャーな言語で実績があるものと同じ
現在のメモリCPU開発環境からも余裕で許容される範囲でもある
個人的に気に入らないと主張しているのと変わらない
580デフォルトの名無しさん
2023/06/07(水) 22:23:55.97ID:gvoW4qh7 記述方法が気に入らないのであれば
自分で変換器を作ればいいだけなのでは?
自分で変換器を作ればいいだけなのでは?
581デフォルトの名無しさん
2023/06/07(水) 22:42:25.08ID:JMx9Ekkp >>577
>TypeScriptのごとくfn f(x: T): Uとかけないのは何故かということだろう
基本的には視認性の問題
TypeScriptも関数の型を明記するときはファットアローを使ってる
>TypeScriptのごとくfn f(x: T): Uとかけないのは何故かということだろう
基本的には視認性の問題
TypeScriptも関数の型を明記するときはファットアローを使ってる
582デフォルトの名無しさん
2023/06/07(水) 23:12:17.03ID:Y4/HSuwV 気に入らない部分くらいあってもいいだろうに過剰に攻撃的な人は落ち着いて欲しい
どんな人もある程度は興味があってきてるんだろうから建設的に話をしましょうよ
気に入らない部分も背景知ると納得できたりするしそういう情報知るの楽しいから書いてくれてる人はありがたい
どんな人もある程度は興味があってきてるんだろうから建設的に話をしましょうよ
気に入らない部分も背景知ると納得できたりするしそういう情報知るの楽しいから書いてくれてる人はありがたい
583デフォルトの名無しさん
2023/06/07(水) 23:20:10.61ID:C+WmTRhv 戻り値型指定の->には returns や maps to 的なニュアンスを感じられるから個人的には好き
584デフォルトの名無しさん
2023/06/07(水) 23:44:37.64ID:ZHL7BfYm ->ってでも実際は不要でしょ?
無駄
無駄
585デフォルトの名無しさん
2023/06/07(水) 23:52:00.89ID:PbTa+35j >>572が、Rustの思想を考え直して欲しい、と攻撃的にスタートしたのはマズかったかもね。
戻り値の型指定がなぜ「:」ではなく「->」なのかと、素直に質問すればよかったかも。
理由は視認性の良さに加えて、C++の関数の戻り型の後置記法「-> int」と、同じ記法にしたためでしょう。
例えばCarbonでは「-> i32」と、Rustと同じになります。
戻り値の型指定がなぜ「:」ではなく「->」なのかと、素直に質問すればよかったかも。
理由は視認性の良さに加えて、C++の関数の戻り型の後置記法「-> int」と、同じ記法にしたためでしょう。
例えばCarbonでは「-> i32」と、Rustと同じになります。
586デフォルトの名無しさん
2023/06/07(水) 23:58:55.09ID:KhstQSkV int foo() {} C/C++前置
auto foo() -> int {} C++後置
fn foo() -> i32 {} Carbon
fn foo() -> i32 {} Rust
auto foo() -> int {} C++後置
fn foo() -> i32 {} Carbon
fn foo() -> i32 {} Rust
587デフォルトの名無しさん
2023/06/08(木) 02:28:36.11ID:EE2g7bKF Cと似ても似つかない。
588デフォルトの名無しさん
2023/06/08(木) 02:35:35.53ID:EE2g7bKF 嘘つき大国アメリカには、良いソフトウェアは作れない。
独占によって維持するのみ。
独占によって維持するのみ。
589デフォルトの名無しさん
2023/06/08(木) 02:36:59.06ID:EE2g7bKF 日本人を大量虐殺したことを反省せず、今度はウクライナとロシア人を
殺している。
そんな国に良いものは作りえない。ずるするのみ。
殺している。
そんな国に良いものは作りえない。ずるするのみ。
590デフォルトの名無しさん
2023/06/08(木) 02:48:48.98ID:EE2g7bKF 平均寿命がアメリカは日本より5歳も低いことをみんな知らない。
そんな後進国を先進国扱いしている。
そんな後進国を先進国扱いしている。
591デフォルトの名無しさん
2023/06/08(木) 02:53:24.84ID:EE2g7bKF 特に、githubなんかは、わけの分からんソフトを作ってる人に別の左翼が
寄付する。左翼は相互扶助で虚構世界を作るのが好き。一般需要が全く無い
ソフトウェアに大金が寄付される。
このように、左翼は日本やアメリカにあってもお互いに虚構を流し合うことで
脳内で言論統制し合い虚構世界を生きている。
寄付する。左翼は相互扶助で虚構世界を作るのが好き。一般需要が全く無い
ソフトウェアに大金が寄付される。
このように、左翼は日本やアメリカにあってもお互いに虚構を流し合うことで
脳内で言論統制し合い虚構世界を生きている。
592デフォルトの名無しさん
2023/06/08(木) 03:00:18.36ID:EE2g7bKF アメリカのやり口:
・需要が無いのに無理やり使わせる。
・不便なのに無料化することで構造上それしか存在しない状態になっている。
・無料化することでどんなに粗悪品でも対抗製品が現れ得ないからである。
・からくりは、検索エンジンの広告料で大金を永遠と稼ぐことで、ソフトを
無料化し、検索エンジンを持たない通常企業の参入を永久阻止しているのである。
・需要が無いのに無理やり使わせる。
・不便なのに無料化することで構造上それしか存在しない状態になっている。
・無料化することでどんなに粗悪品でも対抗製品が現れ得ないからである。
・からくりは、検索エンジンの広告料で大金を永遠と稼ぐことで、ソフトを
無料化し、検索エンジンを持たない通常企業の参入を永久阻止しているのである。
593デフォルトの名無しさん
2023/06/08(木) 03:40:00.34ID:aft4Kt1Y うーん
やはりワッチョイなしスレは放棄する他ないか
やはりワッチョイなしスレは放棄する他ないか
594デフォルトの名無しさん
2023/06/08(木) 03:57:30.29ID:VBjeYwpm595デフォルトの名無しさん
2023/06/08(木) 04:06:08.75ID:EE2g7bKF596デフォルトの名無しさん
2023/06/08(木) 04:07:01.06ID:EE2g7bKF アメリカは基本ルールが守れて無いのに、Rustの仕様なんて語る権利が無い。
597デフォルトの名無しさん
2023/06/08(木) 04:10:05.28ID:EE2g7bKF 要は、アメリカは人殺しが刑務所で書いた本が売れて億万長者になっているようなものだ。
598デフォルトの名無しさん
2023/06/08(木) 07:29:01.96ID:ABj73STK C言語の戻り型の前置記述だとC++で色々と不便なことがわかり
C++11では戻り型を"->"により後置できるようになった
ラムダ式でも戻り型を指定する時に同じく"->"で後置する
つまりC++11の時点で"->"による戻り型の後置記法が導入されている
そして>>586のようにRustとCarbonもC++11の"->"を踏襲している
C++11では戻り型を"->"により後置できるようになった
ラムダ式でも戻り型を指定する時に同じく"->"で後置する
つまりC++11の時点で"->"による戻り型の後置記法が導入されている
そして>>586のようにRustとCarbonもC++11の"->"を踏襲している
599デフォルトの名無しさん
2023/06/08(木) 08:51:14.64ID:9HUG8roo 他言語とか視認性置いておいてもfn f(x: T): Uは一貫性ないんだよな
Tはxの型だがUはfの型ではないわけで
:の左辺が名前で右辺が型という原則に従うなら fn f: (x: T) -> U となるはず
Tはxの型だがUはfの型ではないわけで
:の左辺が名前で右辺が型という原則に従うなら fn f: (x: T) -> U となるはず
600デフォルトの名無しさん
2023/06/08(木) 08:52:05.56ID:u/DD3jzo うちはインターンの女子大生すらRust使い始めたわ
ペチパーには辛い世界になっていくだろうな
ペチパーには辛い世界になっていくだろうな
601デフォルトの名無しさん
2023/06/08(木) 09:22:42.20ID:c1TL2iD8 >>572
お爺ちゃん🥺
お爺ちゃん🥺
602デフォルトの名無しさん
2023/06/08(木) 13:15:19.62ID:5t64h36a >>599
左辺が式だと思えば筋は通るやん?
左辺が式だと思えば筋は通るやん?
603デフォルトの名無しさん
2023/06/08(木) 14:14:27.48ID:Iro3x2NJ604デフォルトの名無しさん
2023/06/08(木) 14:32:27.10ID:5t64h36a 隔離スレにコピペしたからあとはあっちで頼むわ
605デフォルトの名無しさん
2023/06/08(木) 15:00:38.73ID:ybwEaSV3606デフォルトの名無しさん
2023/06/08(木) 20:13:04.97ID:rV/cB3of 関数型言語から拾っただけで深い考えはないだろ
関数型言語は 引数 -> 戻り値 とか 引数 -> 引数 -> 戻り値でカリー化したら引数の数が減ったりするので意味は通じるけど…
関数型言語は 引数 -> 戻り値 とか 引数 -> 引数 -> 戻り値でカリー化したら引数の数が減ったりするので意味は通じるけど…
607デフォルトの名無しさん
2023/06/08(木) 20:15:30.41ID:4tjPz2+B オレオレ一貫性w
全然一貫してない
全然一貫してない
608デフォルトの名無しさん
2023/06/08(木) 20:45:27.43ID:ABj73STK 「-> 戻り型」を批判してる人は先に採用したC++に対しても批判しているの?
ML系で何十年も使われて来た実績と視認性の良さからベストな記法
ML系で何十年も使われて来た実績と視認性の良さからベストな記法
609デフォルトの名無しさん
2023/06/08(木) 21:09:50.06ID:6OsjtmDb ML系は関数呼び出しにかっこを使わないし
関数定義と型注釈を分けて書くし
Cスタイルとはだいぶ違う文法体系だよね
同じ記号を使っているという以外に共通点はないと思うよ
そしてx: TはPascalスタイルの型の付け方なんですね
TypeScriptの他にもScala、Kotlin、HaxeなどがPascalに従って(x: T): Uのように戻り値型注釈をつけます
参考までに
関数定義と型注釈を分けて書くし
Cスタイルとはだいぶ違う文法体系だよね
同じ記号を使っているという以外に共通点はないと思うよ
そしてx: TはPascalスタイルの型の付け方なんですね
TypeScriptの他にもScala、Kotlin、HaxeなどがPascalに従って(x: T): Uのように戻り値型注釈をつけます
参考までに
610デフォルトの名無しさん
2023/06/09(金) 02:12:57.64ID:vRGkF7ww sigplan noticeではindentationとlexical syntaxの話は禁止だったw
611デフォルトの名無しさん
2023/06/09(金) 17:20:52.23ID:3c0vm8Dw syntaxで言うならライフタイムのsyntaxは今でも違和感あるわ。
具体的に使うわけでもない変数を定義するようなのはどうにかならんかったのか。
具体的に使うわけでもない変数を定義するようなのはどうにかならんかったのか。
612デフォルトの名無しさん
2023/06/09(金) 18:41:37.13ID:2zdGi9Wu613デフォルトの名無しさん
2023/06/09(金) 18:57:57.14ID:2zdGi9Wu 変数として使ってないわけじゃないな
具体的なインスタンスが生成されるときに具体的なライフタイムが代入されると思うべきか
具体的なインスタンスが生成されるときに具体的なライフタイムが代入されると思うべきか
614デフォルトの名無しさん
2023/06/09(金) 18:59:26.79ID:FpUIfFmd 型パラメータは変数じゃありません
615デフォルトの名無しさん
2023/06/09(金) 19:10:21.66ID:9O24uU1k 違和感あるようにしてるんだぞ
Bad Partsはあえて汚くなるような構文を選んでる
Bad Partsはあえて汚くなるような構文を選んでる
616デフォルトの名無しさん
2023/06/09(金) 19:42:24.19ID:9O24uU1k617デフォルトの名無しさん
2023/06/09(金) 20:20:27.29ID:JRGzkE91 rustのstructってなんで中身をカンマで区切るんですか?
C/C++/C#/Swiftはセミコロンだし、影響受けたとされるhaskellの直積型はスペースですよね、デフォルトでメモリースペースが最小になるように再配置されるから?
でもそれだと配列のように直線的に配置されるように感じてしまう気がするのだが
C/C++/C#/Swiftはセミコロンだし、影響受けたとされるhaskellの直積型はスペースですよね、デフォルトでメモリースペースが最小になるように再配置されるから?
でもそれだと配列のように直線的に配置されるように感じてしまう気がするのだが
618デフォルトの名無しさん
2023/06/09(金) 20:32:17.49ID:j7wYaK9P 内容の列挙だからカンマの方が自然だと思うけどセミコロンが使われがちなのは
構文解析(エラー復帰)しやすいからなのかな
let Point { x; y; } = p;
だと気持ち悪いからパターンマッチと関係あるかもしれない
構文解析(エラー復帰)しやすいからなのかな
let Point { x; y; } = p;
だと気持ち悪いからパターンマッチと関係あるかもしれない
619デフォルトの名無しさん
2023/06/09(金) 22:10:43.24ID:JRGzkE91 >>618
なるほど?構文解析が楽だからという理由はある程度は納得できるが、自然と感じる理由が個人的な嗜好で何となくなのかな?
ほかにカンマを使う場面は分割代入(destructuring)があるので、structを分解するときに対称性が良いからなのかと考えたり
なるほど?構文解析が楽だからという理由はある程度は納得できるが、自然と感じる理由が個人的な嗜好で何となくなのかな?
ほかにカンマを使う場面は分割代入(destructuring)があるので、structを分解するときに対称性が良いからなのかと考えたり
620デフォルトの名無しさん
2023/06/10(土) 08:59:06.95ID:gJM3u8Zc cでエンディアン確認するとき
unsigned long x = 0x12345678;
for( int i = 0; i < sizeof(long); i++ ){
unsigned long x = 0x12345678;
for( int i = 0; i < sizeof(long); i++ ){
621デフォルトの名無しさん
2023/06/10(土) 09:07:47.23ID:gJM3u8Zc cでエンディアン確認するとき
unsigned long x = 0x12345678;
unsigned char *px = (unsingned char *)&x;
for( int i = 0; i < sizeof(long); i++ ){
fprintf(stderr, "%X ", *px++ );
}
fprintf(stderr, "\n" );
てのをrustならどー書いたらええの>
unsigned long x = 0x12345678;
unsigned char *px = (unsingned char *)&x;
for( int i = 0; i < sizeof(long); i++ ){
fprintf(stderr, "%X ", *px++ );
}
fprintf(stderr, "\n" );
てのをrustならどー書いたらええの>
622デフォルトの名無しさん
2023/06/10(土) 09:44:12.87ID:NYFdP8Rk それと同じこともできるけど、単にエンディアン知りたいだけならこんな感じで
if cfg!(target_endian = "big") {
// big endian
} else {
// little endian
}
if cfg!(target_endian = "big") {
// big endian
} else {
// little endian
}
623デフォルトの名無しさん
2023/06/10(土) 09:56:44.54ID:gJM3u8Zc >>622
エンディアンと書いたのは一例で
実際用意された型にバイトデータがどう格納されてるかを知りたい
ポインタキャストどー書くの?
forとかも変なことなってるけど
条件判断と goto ラベルさえあれば繰り返しは実行できるんだが,
rustにC/C++にあるgotoとかラベルってあるの?
エンディアンと書いたのは一例で
実際用意された型にバイトデータがどう格納されてるかを知りたい
ポインタキャストどー書くの?
forとかも変なことなってるけど
条件判断と goto ラベルさえあれば繰り返しは実行できるんだが,
rustにC/C++にあるgotoとかラベルってあるの?
624デフォルトの名無しさん
2023/06/10(土) 10:05:08.69ID:NYFdP8Rk >>623
その場合はtransmuteかな
https://doc.rust-lang.org/std/mem/fn.transmute.html
gotoはない
ラベルはネストしたループから脱出するためのはある
その場合はtransmuteかな
https://doc.rust-lang.org/std/mem/fn.transmute.html
gotoはない
ラベルはネストしたループから脱出するためのはある
625デフォルトの名無しさん
2023/06/10(土) 10:07:35.39ID:n814OtyQ >>621
let x: i32 = 0x12345678;
// 直訳すると生ポインタなのでunsafe
use std::mem::size_of;
let mut px = &x as *const i32 as *const u8;
for _i in 0..size_of::<i32>() {
print!("{:x} ", unsafe { *px });
unsafe { px = px.add(1); };
}
println!();
// byte列とみなすメソッドを使うとsafe
for b in x.to_ne_bytes() {
print!("{b:x} ");
}
println!();
let x: i32 = 0x12345678;
// 直訳すると生ポインタなのでunsafe
use std::mem::size_of;
let mut px = &x as *const i32 as *const u8;
for _i in 0..size_of::<i32>() {
print!("{:x} ", unsafe { *px });
unsafe { px = px.add(1); };
}
println!();
// byte列とみなすメソッドを使うとsafe
for b in x.to_ne_bytes() {
print!("{b:x} ");
}
println!();
626デフォルトの名無しさん
2023/06/10(土) 10:13:46.29ID:udyVxmRJ エンディアン君を、ウッカリ助平と命名したい....
627デフォルトの名無しさん
2023/06/10(土) 10:25:42.92ID:gJM3u8Zc628デフォルトの名無しさん
2023/06/10(土) 10:26:30.43ID:gJM3u8Zc629デフォルトの名無しさん
2023/06/10(土) 10:35:25.62ID:n814OtyQ to_ne_bytesのneはnative endianの意味でleやbeもある
neを使ってlittle endian環境ならば
assert_eq!(0x12345678_u32.to_ne_bytes(), [0x78, 0x56, 0x34, 0x12]);
assert_eq!(0x12345678, u32::from_ne_bytes([0x78, 0x56, 0x34, 0x12]));
neを使ってlittle endian環境ならば
assert_eq!(0x12345678_u32.to_ne_bytes(), [0x78, 0x56, 0x34, 0x12]);
assert_eq!(0x12345678, u32::from_ne_bytes([0x78, 0x56, 0x34, 0x12]));
630デフォルトの名無しさん
2023/06/10(土) 15:12:50.25ID:PsHn2Fx3 テキストデータを画像にレンダリングして最終的に2値モノクロ画像を得たいんだけど
今だとどんなクレートを使うのがいいかな?
フォントレンダラはfont-rs・・・は放置されているしからfontdueとか?
2値化に影響するディザリングのオプションとかを指定できるとありがたい
今だとどんなクレートを使うのがいいかな?
フォントレンダラはfont-rs・・・は放置されているしからfontdueとか?
2値化に影響するディザリングのオプションとかを指定できるとありがたい
631デフォルトの名無しさん
2023/06/10(土) 15:48:41.24ID:UQF9pDDb rusttypeとかab_glyphってのがダウンロード数多いみたい
632デフォルトの名無しさん
2023/06/12(月) 12:58:17.77ID:oql3AWnL ただの思いつきだが、CやC++はメモリセーフではないだろ。ってことはプログラム中で結構無駄なメモリを消費してたりしないの?Rustはそこの所最適化されてるから究極的にはRustの方がCやC++よりも高速に動作するのでは?
633デフォルトの名無しさん
2023/06/12(月) 13:04:11.65ID:RXOqFmSk ?
634デフォルトの名無しさん
2023/06/12(月) 14:15:17.58ID:krlNNb+N ちょっと何言ってるかわからない
635デフォルトの名無しさん
2023/06/12(月) 16:35:03.90ID:snPhjFNJ メモリセーフかどうかと
メモリを無駄使いしてるかどうかに直接の関係はない
メモリを無駄使いしてるかどうかに直接の関係はない
636デフォルトの名無しさん
2023/06/12(月) 16:47:01.05ID:/yLe7ykR メモリ安全性とメモリの利用効率に関係はないが、
安全性のために導入したライフタイム管理が最適化に影響する部分がないとは言えない。
依存関係が明瞭だからエイリアス解析がしやすく、
結果的に効果的に最適化しやすい可能性は高い。
しかし実行時でないと安全なアクセスであるかどうか検出が不可能な場合もあるから
それも込みで考えると Rust のほうがやや不利であると言える要素もある。
全体的な性能は互角か Rust のほうがやや遅いくらいじゃないの。 知らんけど。
性能が互角くらいでより安全ならそのほうがいいじゃろ。
安全性のために導入したライフタイム管理が最適化に影響する部分がないとは言えない。
依存関係が明瞭だからエイリアス解析がしやすく、
結果的に効果的に最適化しやすい可能性は高い。
しかし実行時でないと安全なアクセスであるかどうか検出が不可能な場合もあるから
それも込みで考えると Rust のほうがやや不利であると言える要素もある。
全体的な性能は互角か Rust のほうがやや遅いくらいじゃないの。 知らんけど。
性能が互角くらいでより安全ならそのほうがいいじゃろ。
637デフォルトの名無しさん
2023/06/12(月) 18:28:52.16ID:EF0TFJgA メモリ安全にするために過剰なコピーや長いライフタイムになる実装をしてしまうことがあり、それをコンパイラがガードしてあげるからルールに従って書いてねってのがRustの思想だと思う。
逆に適当に書いても安全にするし出来るだけメモリ効率も配慮するよってのが他のGC言語
逆に適当に書いても安全にするし出来るだけメモリ効率も配慮するよってのが他のGC言語
638デフォルトの名無しさん
2023/06/12(月) 18:44:13.30ID:A48fS+G5 そんな話一般論で語れる訳ないぞ
コードを出しな?
コードを出しな?
639デフォルトの名無しさん
2023/06/12(月) 20:02:49.65ID:dpH2J6Rw640デフォルトの名無しさん
2023/06/12(月) 21:33:36.66ID:/yLe7ykR641デフォルトの名無しさん
2023/06/12(月) 21:39:50.33ID:MIVgoZU9 意味のない議論がほんと好きだねー
642デフォルトの名無しさん
2023/06/12(月) 21:44:05.58ID:G7kVZgOF コードが一切出てこないのが本当不思議
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★5 [BFU★]
- 「日本はパンダがいなくなる状況に直面するだろう」 中国メディア、専門家の見方伝える [♪♪♪★]
- 止まらぬ「日本売り」 高市財政への懸念で進む金利上昇と円安 ★2 [蚤の市★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★12 [樽悶★]
- 【速報】10月の消費者物価3.0%上昇 [蚤の市★]
- 【コメ】価格「5キロ4316円」で最高値を更新…「おこめ券」が解決につながらない根本的な理由 コメ農家が危機感をあらわにする「離農」 [ぐれ★]
- 愛国保守、日本を本気で潰しにかかる [819729701]
- 高市早苗、会食せず議員宿舎に籠って勉強の毎日「飲んでる暇があれば、政策を練り、資料を読みたい」 [485187932]
- 【高市速報】日本の政治家も国民も「実利を取る」って選択ができないバカしかいないのか? [369521721]
- 【悲報】Suica、セキュリティを突破されたのが販売されはじめる [347751896]
- 東大名誉教授「中国は誤った宣伝を繰り広げ、対立を煽り、経済の失敗による国内の不満を日本に向けている」 [903292576]
- 【悲報】米問屋「助けて!米がとんでもない量余ってるのに全然売れないの!でも絶対値下げしたくない…どうしたらいいの…」 [802034645]
