Rustとか言うダブスタ言語 (173レス)
上下前次1-新
151:  警備員[Lv.7][新芽] 2024/10/22(火)12:30 AAS
 移譲で使えなくなるのが問題無いなら値型も使えなくなって問題ないだろ 
152: 2024/10/22(火)13:12 AAS
 >>149 
 デタラメはよくないですよ 
 Rustは大きく分けると2種類の型があります 
 ・Copyトレイト実装型 (Copy型) 
 ・Copyトレイト非実装型 (!Copy型) 
  
 前者はプリミティブ型であるi32やf64やcharなどだけでなく 
 std::fs::FileTypeやstd::net::SocketAddrなどもCopy型です 
 後者はプリミティブ型であるarrayやsliceやstrなどが!Copy型です 
  
 ちなみに参照型&TはCopy型です 
 可変参照型&mut Tは!Copy型です 
153(1): 2024/10/22(火)13:27 AAS
 >>150 
 ブロック終了までメモリ確保してるってのが間違いって何度も言ってるのにまだわからないの?プリミティブ型で開放するメモリなど最初からないってのよ。 
 ましてや定数ならそもそも変数領域さえ作らない。 
  
 ムーブがデフォなんじゃなくて、コピーが基本でコピーが出来ない型だけムーブなの。c++みたいにムーブの時だけmoveって書く仕様なら納得するの? 
  
 そうなったらそうで絶対文句言うのよ。イコールって書いたらコンパイルエラーが出たとか、moveって書いてもムーブ出来ない時があるってね。c++でムーブセマンティクスが流行らなかったのはそれだからね。 
154: 2024/10/22(火)14:08 AAS
 ダブスタっていうなら、それこそC++の 
 「ムーブするかコピーするかを決めるのはコンパイラ様だ! 
 人ごときがstd::moveとか書こうが無視してコピーしてやる!エラーも警告も出さねえぜ!」 
 ってやつのことだよな。あれがクソっていうなら同意。 
155(1): 2024/10/22(火)17:54 AAS
 >>150 
 Rustでは明示的に指定しない限りコストの高いヒープ領域メモリを使用しない 
 スタック領域メモリが使われるわけだが関数やブロック内で既に使い終わっている変数があればそれが使っていた領域を安全に再利用するので最小限のサイズしかスタックを消費しない 
 さらにレジスタがある環境ならばレジスタを使用すれば済む分はスタックを消費しない 
 そしてスタック領域メモリの解放とは関数の呼び出し元に戻る時にスタックポインタなどを元の位置に戻すことのみしかコストはかからない 
156(2):  警備員[Lv.4][新芽] 2024/10/22(火)19:31 AAS
 >>153 
 だとしても再度使えるようにするのは意味わからんだろ 
 開放しろって話 
 >>155 
 だからコストかからないとかどうとかじゃなくてコードから把握できないから全て渡したら解放にしろよって話なんだわ 
 解放しない場合は.mcopyだの後ろにつけとけばいいだろ 
  
 なんでお前ら人の話聞かないの? 
157(1): 2024/10/22(火)19:48 AAS
 >>156 
 いやヒープも使ってない変数を解放出来るプログラム言語存在しないだろ? 
 解放しないんじゃなくて出来ないのよ? 
 何もしない空関数呼ぶの? 
 それこそ馬鹿でしょ。 
 何基準に合わせろと言うのよ? 
  
 ムーブの時だけmove付けろならまだ話になるが。 
 そうしない理由はc++からの教訓って話しもしてる。 
158(2): 2024/10/22(火)20:10 AAS
 // MCopyトレイトを定義 
 pub trait MCopy { 
     fn mcopy(&self) -> Self; 
 } 
  
 // プリミティブ型に対して一括実装 
 macro_rules! impl_mcopy { 
     ($($t:ty),*) => { 
         $( 
             impl MCopy for $t { 
                 fn mcopy(&self) -> Self { 
                     *self 
                 } 
             } 
         )* 
     } 
 } 
  
 // 全てのプリミティブ型に実装 
 impl_mcopy!( 
     u8, u16, u32, u64, u128, usize, 
     i8, i16, i32, i64, i128, isize, 
     f32, f64, 
     bool, 
     char 
 ); 
  
 はい、もう何がしたいのか分からないけどプリミティブ型にmcopy実装したから好きにして。 
 これで読みやすくなる? 
159: 2024/10/22(火)21:17 AAS
 >ブロック終了までメモリ確保してる 
 スタックとヒープの違いが本当に分からないんだな 
 「構文上のルール統一のために変数を使えなくする」は可不可でいえばできるけど、それで何かしらリソースが解放されたりパフォーマンス上のメリットがあるわけでもない 
 パフォーマンスやリソース管理などの理由があるケースでのみムーブされるだけなんだし 
160(1): 2024/10/22(火)21:29 AAS
 型によって管理が変わるって他の言語でもあるだろ 
 C#で 
 {  
  var a = new Foo(); 
 } 
 という書き方が問題ないかは Foo の実装に依存する 
  
 なんでGCに任せられない型があるの?ダブスタを解消するために「全ての型で明示的なDisposeの呼び出しが必要」にしたりしないの? 
 とか言わないだろ 
161: 2024/10/22(火)21:37 AAS
 >>156 
 何を解放しろと主張しているの? 
 その整数値は例えばレジスタに即値ロードされるか 
 あるいは他の関数からレジスタに入って返り値として返ってくるんだよ 
 もし何の用途にも使われなければ最適化でそのレジスタの使用すらなくなるし 
 もし他の関数に渡すなら別のレジスタにコピーされて引数として渡される 
 そしてレジスタは次々と別の用途に使われていく 
 いったい何を解放しろと主張しているの? 
162(1): 2024/10/23(水)00:10 AAS
 ダブスタだ解放だとゴネてるから意味不明だけど 
 1が言いたいのって、Haskell見た初心者が「記号だらけで意味不明でクソ。英単語で構文を作れ」 
 って言うレベルの難癖なんじゃねえの? 
163: 2024/10/23(水)06:33 AAS
 >>6 
 参照型&TはCopyトレイトを実装しているのでコピーされて何度でも使えるよ 
  
 >>7 
 &strも&Stringどちらも参照型だよ 
 strは可変長なのでそのまま扱わずに参照型&strとして用いるよ 
 Stringもそのまま扱うのは生成する時だけで読み取りは&strとして扱うよ 
 書き換えの時は可変参照型&mut Stringとして扱うよ 
164(1):  警備員[Lv.6][新芽] 2024/10/23(水)07:22 AAS
 >>157 
 メモリ解放すればいいだろ 
165:  警備員[Lv.6][新芽] 2024/10/23(水)07:24 AAS
 >>162 
 pragmaまみれの構文書いてるやつは言うことが違うね 
166:  警備員[Lv.6][新芽] 2024/10/23(水)07:26 AAS
 >>160 
 Dispose()を呼ばなければならないのは例外だから 
 プリミティヴ型は基本型のなの通り基本なんだよ? 
167: 2024/10/23(水)07:40 AAS
 >>164 
 このスレでメモリの仕組み理解してないのあなた1人だけよ。ありもしない幻想に囚われてる。 
  
 rustどころか他の言語も危ういから無理せずもっと簡単なのから試したほうがいいよ。 
  
 一応望みの物は >>158 に置いてあるのでちゃんと使ってよね。 
168: 2024/10/23(水)17:11 AAS
 >>49 >>122 
 プリミティブ型とは何かを勘違いしているのではないか 
 Rustではヒープメモリを前提とせずに使える基本パーツの型を指す 
  
 この公式ページに一覧が挙げられている 
 https://doc.rust-lang.org/std/#primitives 
 このようにarrayやsliceやstrなども当然プリミティブ型である 
169: 2024/10/24(木)16:02 AAS
 ムーブが基本でtrait Copyを実装しているCopy型だけ特別にコピーだね 
 プリミティブ型の中にもCopy型と!Copy型の両方あるね 
170: 2024/10/25(金)12:56 AAS
 結局1は俺が何言ってるか理解できない日本語すらわからんバカ共と話すことはないって 
 自分の中では大勝利して満足したんだろうか 
上下前次1-新書関写板覧索設栞歴
あと 3 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.638s*