Rustとか言うダブスタ言語 (173レス)
上下前次1-新
31: 2024/10/18(金)00:14 AAS
 >>30 
 いや重要なのはわかるけど変数に代入したあとは解放なりなんなりすればよくないか? 
 それか普通の言語のように記述を変えるか 
 let b = mcopy(a); 
 とかならだれも文句言わないけど 
32: 2024/10/18(金)00:16 AAS
 a.mcopy;とかでもいいよaはメモリコピーインターフェースを実装しているならこれが一般的な書き方になるか? 
33(1): 2024/10/18(金)00:17 AAS
 だから型を変えることで記述変えてるじゃん? 
 他の言語の記法が絶対正義でRust固有のものは常に間違ってるっていうなら、それはもうどうしようもない 
34: 2024/10/18(金)00:22 AAS
 Rustの良いところってintやfloat,longなんかにbit数書いてるところだよね 
 あれたまにど忘れしちゃうときあるからみたらわかるの便利 
35: 2024/10/18(金)00:25 AAS
 >>33 
 記述は変えてなくね? 
36(1): 2024/10/18(金)06:24 AAS
 >>29 
 RAIIでググれ 
 変数はスコープを外れたら寿命が尽きるからリークにはならないし、そもそもスタックとヒープの違いを理解してないと思う 
37: 2024/10/18(金)07:28 AAS
 所有権はメモリだけでなくリソース管理の問題でもある 
 ファイルハンドルなんかが良い例で、実態はせいぜい数バイトしかないからコピー自体にコストがかかるわけではないんだけど、ファイルというリソースに絡むから所有権の管理の対象になる 
 あるファイルへのアクセスを行う変数が同時に複数ある状態を許容しない、ということ 
  
 共有するなら Rc や Arc などの『シェアされてる』ことを示す型でのラップが必要だし、実際にアクセスする際に Mutex などでのガードが必要になる 
 これらをコンパイル時に制限することでバグを生みにくい設計にしようというのがRust的な考え方 
38: 2024/10/19(土)00:29 AAS
 全く見たことがない言語なんだ、なんか発狂している海外のエンジニアを見るとこの言語は大丈夫なのかとは思う 
39: 2024/10/19(土)02:18 AAS
 名前通りだよまったく 
40: 2024/10/19(土)05:07 AAS
 rustではコピートレイトが実装されてる型というのがあって、基本的にはプリミティブな型がそれに相当するの。で、それらはスタックに確保されるから解放しなくていいの。コピートレイトを実装出来る条件というのがあって、デストラクタが不要な物に限るの。解放しなくていいものだけ。わかりやすいでしょ? 
41: 2024/10/19(土)07:17 AAS
 ヒープに確保したらどんな型だろうが開放しないといけないのでは? 
42: 2024/10/19(土)08:22 AAS
 i32型ならスタックに確保される。 
 ヒープに確保したかったらBox<i32>で、それはもう別の型。なのでコピー出来ない。 
43: 2024/10/19(土)08:47 AAS
 わあわかりやすい 
44(1): 2024/10/19(土)09:07 AAS
 デストラクト不要のプリミティブ型は小文字で書かれてて、それ以外の型は大文字で書かれてるでしょ。 
 一応その辺でCopyが出来るか区別つくようにはなってる。 
45(1): 2024/10/19(土)09:39 AAS
 米ホワイトハウス「ソフトウェアはメモリ安全でなければならない」との声明を発表:「C」「C++」よりも「Rust」などのプログラミング言語を推奨 
 https://atmarkit.itmedia.co.jp/ait/articles/2403/18/news045.html 
  
 米国国防総省のDARPA、CからRustへのコード変換を自動化する「TRACTOR」プログラムを開始 
 https://atmarkit.itmedia.co.jp/ait/spv/2408/14/news045.html 
46:  警備員[Lv.11][芽] 2024/10/19(土)11:35 AAS
 >>36 
 だからmain関数で宣言してたらソフト終了するまでメモリ解放されないだろアホ 
 >>44 
 でもメモリコピーするクラスというか型は各々作れるよね?そのときどうすんの? 
 俺は素直に変数.mcopyで良いと思うが 
47(1): 2024/10/19(土)12:02 AAS
 struct Point { 
   x: i32, 
   y: i32. 
 } 
  
 例えばこのようなPoint構造体を作ったら。それは新しい型であってデフォルトではCopy出来ない。 
  
 もしこの構造体の所に 
 #[derive(Copy,Clone)] 
 という指定を付けるとCopyトレイトが実装されるのでコピー出来るようになる。ただ慣習的には構造体は暗黙的にコビーされるのは良くないので、Cloneだけ実装して明示的にCloneしてねというのが推奨。 
48:  警備員[Lv.11][芽] 2024/10/19(土)12:05 AAS
 >>47 
 だったらはなから変数.mcopyでいいだろ 
49(1):  警備員[Lv.11][芽] 2024/10/19(土)12:06 AAS
 それつけなかったらプリミティヴも移譲にするでいいじゃん 
 そっちのほうがはるかに神言語のそれだろ 
50: 2024/10/19(土)12:10 AAS
 let p1 = Point { x:100, y:200 }; 
 let p2 = p1;  // copy が実装されてる場合 
 let p3 = p1.clone(); // 明示的な clone 
上下前次1-新書関写板覧索設栞歴
あと 123 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.625s*