Rustとか言うダブスタ言語 (173レス)
上下前次1-新
1(5): 2024/10/17(木)08:07 AAS
値型と参照型で振る舞い変えるダブスタ言語だけど使ってるやついる?
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 {
省16
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ではヒープメモリを前提とせずに使える基本パーツの型を指す
この公式ページに一覧が挙げられている
外部リンク:doc.rust-lang.org
このようにarrayやsliceやstrなども当然プリミティブ型である
169: 2024/10/24(木)16:02 AAS
ムーブが基本でtrait Copyを実装しているCopy型だけ特別にコピーだね
プリミティブ型の中にもCopy型と!Copy型の両方あるね
170: 2024/10/25(金)12:56 AAS
結局1は俺が何言ってるか理解できない日本語すらわからんバカ共と話すことはないって
自分の中では大勝利して満足したんだろうか
171: 2024/10/25(金)19:17 AAS
>>158
Rustはトレイト境界の指定によりジェネリックで簡潔&安全にこのように書けるよ
trait MCopy {
fn mcopy(&self) -> Self;
}
impl<T: Copy> MCopy for T {
fn mcopy(&self) -> Self {
*self
}
}
省11
172: 2024/10/27(日)14:31 AAS
multiple readers XOR single writerなので
可変がなければ参照はいくつでもコピーできるね
対照的に可変参照は独占的オンリーワンになる
173: 01/31(金)08:58 AAS
【結婚難】違反SEの代償【孤独死】
☆大損害だから稼働減らして収入増やせ☆
金稼ぎ妨害!
共働き妨害!
時間外労働違反
↓
偽装委託多重派遣
↓
低技術
↓
省7
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.642s*