【プログラミング】Rust勉強し始めたけどダブスタが多すぎる

記事サムネイル
1 : 2024/09/20(金) 21:45:50.325 ID:kWqZd/zt0
プリミティヴ型は所有権が移動しても破棄されないとかダブスタにも程があるんよ
2 : 2024/09/20(金) 21:48:44.541 ID:kWqZd/zt0
let a = 5;←プリミティヴ型のint i32
let b = a;←bに所有権が移動(プリミティヴじゃない型なら普通ここでaは破棄される)
test(a);←test()関数を作りaを渡す
test1(a);
test2(a);

これ普通にうごくんだがwwww
3 : 2024/09/20(金) 21:50:28.092 ID:kWqZd/zt0
逆に
let a = String::from(“VIP”);←プリミティヴじゃない型の代表としてString型とする
let b = a;
test(a);←これでコンパイルエラー
4 : 2024/09/20(金) 21:51:51.368 ID:kWqZd/zt0
こういうダブスタの多い言語って全然完成されてる感無いから嫌いなんだが
あとからどんどんいらない機能足していってカオスになりそうな未来しか無い
5 : 2024/09/20(金) 21:54:34.166 ID:VgAEOlzo0
先にC言語やりなって・・・
文字列ってのは型じゃなくて配列なんだよ
その最初の基本を知らんから同じように型だと思っちゃう
6 : 2024/09/20(金) 21:58:31.550 ID:kWqZd/zt0
>>5
いやだとしてもi32が移動されないのは問題だろ
7 : 2024/09/20(金) 22:00:39.856 ID:VgAEOlzo0
そんな風に思っちゃうのはメモリ内部のアドレスがどうなってるか全然予想できてないからに過ぎない
シーシャはさぁ流行りのIT用語に惑わされすぎ
本当に情報工学やりたいならちゃんとC言語とアセンブラやってメモリとアドレスの勉強しなさい
情熱が空回りしてますよ
9 : 2024/09/20(金) 22:09:57.110 ID:kWqZd/zt0
>>7
なぜプリミティヴ型の場合は安全になるの?
教えてくれ
12 : 2024/09/20(金) 22:13:03.921 ID:VgAEOlzo0
>>9
プリミティブ型が安全などという概念自体がない
シーシャはどうして誰も言ってないことをいきなり言い出すのか
14 : 2024/09/20(金) 22:15:54.496 ID:kWqZd/zt0
>>12
安全だからコンパイルできるようになってんじゃねぇの?
8 : 2024/09/20(金) 22:08:27.801 ID:9Rx1thwJ0
プリミティブかどうかは関係ないぞ
Copyトレイトでググれ
10 : 2024/09/20(金) 22:10:47.696 ID:kWqZd/zt0
>>8
&つけるやつ?
それ参照渡しだろ?
これは参照渡しじゃない
11 : 2024/09/20(金) 22:11:52.949 ID:kWqZd/zt0
これをダブスタと言えない理由を教えてくれよ
どう見てもダブスタでは?
18 : 2024/09/20(金) 22:21:30.574 ID:kWqZd/zt0
じゃあaが破棄されるタイミングっていつなんだ?
ブロック抜けるまで破棄されない感じになんのか?
それはメモリコピーしたbも同様ってことか?
22 : 2024/09/20(金) 22:29:49.180 ID:9Rx1thwJ0
>>18
ブロックを抜けたときと思ってOK
整数の場合はスタックにあるものなので、解放時に特別な処理が走ったりはしない
文字列や配列かつそのデータを他と共有していない場合 (RcやArcを使ってない場合) は、ブロックを抜けたタイミングでヒープのデータも解放される
26 : 2024/09/20(金) 22:35:02.815 ID:kWqZd/zt0
>>22
文字列とかの場合
{
let b = String::from(“Hage”);
test(b);
}
の場合このブロックが終了してもbは保持されててtest()が終わった段階で破棄されるってことか
20 : 2024/09/20(金) 22:25:20.171 ID:VgAEOlzo0
プログラミングの基本であるヒープにおけるメモリ確保と解放を理解できてないから
型の破棄とかいうわけのわからないことを言い出すんだ、そんなもんないわ
シーシャはもうプログラミング用語を勝手に自分で解釈するくせやめろ
25 : 2024/09/20(金) 22:32:04.052 ID:kWqZd/zt0
>>20
型の解放なんか一つも言ってねぇよ
メモリの解放って意味なんだが
21 : 2024/09/20(金) 22:27:04.829 ID:OzrU8wc70
c言語も知らないメモリ管理に興味ないならわざわざrustやる理由ないだろ
GO言語のほうがお前には向いてるよ
24 : 2024/09/20(金) 22:31:28.655 ID:kWqZd/zt0
>>21
いや俺はC#するよ
Google嫌いなのでGoは一生使いません
27 : 2024/09/20(金) 22:35:09.688 ID:5V0aZ9/l0
そんなことより週何回オ●ニーする?
28 : 2024/09/20(金) 22:35:55.076 ID:kWqZd/zt0
>>27
5
31 : 2024/09/20(金) 22:48:36.142 ID:j7WXiP890
一生c#に閉じこもってろ
32 : 2024/09/20(金) 22:49:32.145 ID:kWqZd/zt0
>>31
Rust学ぶ気が無いゴミがなんか言ってるw
イメージでRust持ち上げててワロタwww
33 : 2024/09/20(金) 22:53:03.877 ID:kWqZd/zt0
Rustの速さって制限かけてLLVMで機械語に翻訳出来るってところしかないんだから他のメモリ安全の言語でLLVMに通せたらそれが一番いいよねって話になる
正直そうなればRustの存在価値とか無くなる
34 : 2024/09/20(金) 22:54:24.290 ID:j7WXiP890
公式チュートリアルも読めない奴がなんか言ってる
35 : 2024/09/20(金) 22:55:15.654 ID:kWqZd/zt0
>>34
公式チュートリアルすら読まないやつがなんか言ってるw
40 : 2024/09/20(金) 22:59:40.821 ID:j7WXiP890
>>35
存在すら知らんかったのが何を言うてる
37 : 2024/09/20(金) 22:57:29.311 ID:OzrU8wc70
c言語(というか低レベルなメモリ管理)が配列をどんなふうに扱ってるか知れば一貫性があるし混乱しにくくて面白い仕様だと思えるんだけどね
実体を持っている変数は代入で実体コピー、ポインタを持っている変数は代入でポインタコピーされる
この動作は一貫性があるけど「ys=xsでコピーしたと思ったらしてなかった」ありがちな間違いを起こしやすい
だからその間違いをコンパイルエラーにしてやろうってのが面白いしプリミティブな型と違うのもすんなり納得できる
39 : 2024/09/20(金) 22:58:55.247 ID:+/BJo4cO0
やっぱりスクール通ったほうが覚えが速いな

コメント

タイトルとURLをコピーしました