>>150
ブロック終了までメモリ確保してるってのが間違いって何度も言ってるのにまだわからないの?プリミティブ型で開放するメモリなど最初からないってのよ。
ましてや定数ならそもそも変数領域さえ作らない。
ムーブがデフォなんじゃなくて、コピーが基本でコピーが出来ない型だけムーブなの。c++みたいにムーブの時だけmoveって書く仕様なら納得するの?
そうなったらそうで絶対文句言うのよ。イコールって書いたらコンパイルエラーが出たとか、moveって書いてもムーブ出来ない時があるってね。c++でムーブセマンティクスが流行らなかったのはそれだからね。
Rustとか言うダブスタ言語
153仕様書無しさん
2024/10/22(火) 13:27:58.50154仕様書無しさん
2024/10/22(火) 14:08:17.06 ダブスタっていうなら、それこそC++の
「ムーブするかコピーするかを決めるのはコンパイラ様だ!
人ごときがstd::moveとか書こうが無視してコピーしてやる!エラーも警告も出さねえぜ!」
ってやつのことだよな。あれがクソっていうなら同意。
「ムーブするかコピーするかを決めるのはコンパイラ様だ!
人ごときがstd::moveとか書こうが無視してコピーしてやる!エラーも警告も出さねえぜ!」
ってやつのことだよな。あれがクソっていうなら同意。
155仕様書無しさん
2024/10/22(火) 17:54:16.14 >>150
Rustでは明示的に指定しない限りコストの高いヒープ領域メモリを使用しない
スタック領域メモリが使われるわけだが関数やブロック内で既に使い終わっている変数があればそれが使っていた領域を安全に再利用するので最小限のサイズしかスタックを消費しない
さらにレジスタがある環境ならばレジスタを使用すれば済む分はスタックを消費しない
そしてスタック領域メモリの解放とは関数の呼び出し元に戻る時にスタックポインタなどを元の位置に戻すことのみしかコストはかからない
Rustでは明示的に指定しない限りコストの高いヒープ領域メモリを使用しない
スタック領域メモリが使われるわけだが関数やブロック内で既に使い終わっている変数があればそれが使っていた領域を安全に再利用するので最小限のサイズしかスタックを消費しない
さらにレジスタがある環境ならばレジスタを使用すれば済む分はスタックを消費しない
そしてスタック領域メモリの解放とは関数の呼び出し元に戻る時にスタックポインタなどを元の位置に戻すことのみしかコストはかからない
157仕様書無しさん
2024/10/22(火) 19:48:23.93 >>156
いやヒープも使ってない変数を解放出来るプログラム言語存在しないだろ?
解放しないんじゃなくて出来ないのよ?
何もしない空関数呼ぶの?
それこそ馬鹿でしょ。
何基準に合わせろと言うのよ?
ムーブの時だけmove付けろならまだ話になるが。
そうしない理由はc++からの教訓って話しもしてる。
いやヒープも使ってない変数を解放出来るプログラム言語存在しないだろ?
解放しないんじゃなくて出来ないのよ?
何もしない空関数呼ぶの?
それこそ馬鹿でしょ。
何基準に合わせろと言うのよ?
ムーブの時だけmove付けろならまだ話になるが。
そうしない理由はc++からの教訓って話しもしてる。
158仕様書無しさん
2024/10/22(火) 20:10:09.50 // 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実装したから好きにして。
これで読みやすくなる?
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:13.30 >ブロック終了までメモリ確保してる
スタックとヒープの違いが本当に分からないんだな
「構文上のルール統一のために変数を使えなくする」は可不可でいえばできるけど、それで何かしらリソースが解放されたりパフォーマンス上のメリットがあるわけでもない
パフォーマンスやリソース管理などの理由があるケースでのみムーブされるだけなんだし
スタックとヒープの違いが本当に分からないんだな
「構文上のルール統一のために変数を使えなくする」は可不可でいえばできるけど、それで何かしらリソースが解放されたりパフォーマンス上のメリットがあるわけでもない
パフォーマンスやリソース管理などの理由があるケースでのみムーブされるだけなんだし
160仕様書無しさん
2024/10/22(火) 21:29:02.86 型によって管理が変わるって他の言語でもあるだろ
C#で
{
var a = new Foo();
}
という書き方が問題ないかは Foo の実装に依存する
なんでGCに任せられない型があるの?ダブスタを解消するために「全ての型で明示的なDisposeの呼び出しが必要」にしたりしないの?
とか言わないだろ
C#で
{
var a = new Foo();
}
という書き方が問題ないかは Foo の実装に依存する
なんでGCに任せられない型があるの?ダブスタを解消するために「全ての型で明示的なDisposeの呼び出しが必要」にしたりしないの?
とか言わないだろ
161仕様書無しさん
2024/10/22(火) 21:37:15.18 >>156
何を解放しろと主張しているの?
その整数値は例えばレジスタに即値ロードされるか
あるいは他の関数からレジスタに入って返り値として返ってくるんだよ
もし何の用途にも使われなければ最適化でそのレジスタの使用すらなくなるし
もし他の関数に渡すなら別のレジスタにコピーされて引数として渡される
そしてレジスタは次々と別の用途に使われていく
いったい何を解放しろと主張しているの?
何を解放しろと主張しているの?
その整数値は例えばレジスタに即値ロードされるか
あるいは他の関数からレジスタに入って返り値として返ってくるんだよ
もし何の用途にも使われなければ最適化でそのレジスタの使用すらなくなるし
もし他の関数に渡すなら別のレジスタにコピーされて引数として渡される
そしてレジスタは次々と別の用途に使われていく
いったい何を解放しろと主張しているの?
162仕様書無しさん
2024/10/23(水) 00:10:06.06 ダブスタだ解放だとゴネてるから意味不明だけど
1が言いたいのって、Haskell見た初心者が「記号だらけで意味不明でクソ。英単語で構文を作れ」
って言うレベルの難癖なんじゃねえの?
1が言いたいのって、Haskell見た初心者が「記号だらけで意味不明でクソ。英単語で構文を作れ」
って言うレベルの難癖なんじゃねえの?
163仕様書無しさん
2024/10/23(水) 06:33:50.46 >>157
メモリ解放すればいいだろ
メモリ解放すればいいだろ
>>162
pragmaまみれの構文書いてるやつは言うことが違うね
pragmaまみれの構文書いてるやつは言うことが違うね
167仕様書無しさん
2024/10/23(水) 07:40:07.56168仕様書無しさん
2024/10/23(水) 17:11:17.22 >>49 >>122
プリミティブ型とは何かを勘違いしているのではないか
Rustではヒープメモリを前提とせずに使える基本パーツの型を指す
この公式ページに一覧が挙げられている
https://doc.rust-lang.org/std/#primitives
このようにarrayやsliceやstrなども当然プリミティブ型である
プリミティブ型とは何かを勘違いしているのではないか
Rustではヒープメモリを前提とせずに使える基本パーツの型を指す
この公式ページに一覧が挙げられている
https://doc.rust-lang.org/std/#primitives
このようにarrayやsliceやstrなども当然プリミティブ型である
169仕様書無しさん
2024/10/24(木) 16:02:01.63 ムーブが基本でtrait Copyを実装しているCopy型だけ特別にコピーだね
プリミティブ型の中にもCopy型と!Copy型の両方あるね
プリミティブ型の中にもCopy型と!Copy型の両方あるね
170仕様書無しさん
2024/10/25(金) 12:56:54.88 結局1は俺が何言ってるか理解できない日本語すらわからんバカ共と話すことはないって
自分の中では大勝利して満足したんだろうか
自分の中では大勝利して満足したんだろうか
171仕様書無しさん
2024/10/25(金) 19:17:54.04 >>158
Rustはトレイト境界の指定によりジェネリックで簡潔&安全にこのように書けるよ
trait MCopy {
fn mcopy(&self) -> Self;
}
impl<T: Copy> MCopy for T {
fn mcopy(&self) -> Self {
*self
}
}
fn main() {
let x = 123.45;
let y = x.mcopy();
assert_eq!(x, y);
let x = "abc.de";
let y = x.mcopy();
assert_eq!(x, y);
}
strはCopy実装型ではないけど
&TがジェネリックにCopy実装型なので
&strの文字列も上記のように動作
Rustはトレイト境界の指定によりジェネリックで簡潔&安全にこのように書けるよ
trait MCopy {
fn mcopy(&self) -> Self;
}
impl<T: Copy> MCopy for T {
fn mcopy(&self) -> Self {
*self
}
}
fn main() {
let x = 123.45;
let y = x.mcopy();
assert_eq!(x, y);
let x = "abc.de";
let y = x.mcopy();
assert_eq!(x, y);
}
strはCopy実装型ではないけど
&TがジェネリックにCopy実装型なので
&strの文字列も上記のように動作
172仕様書無しさん
2024/10/27(日) 14:31:17.99 multiple readers XOR single writerなので
可変がなければ参照はいくつでもコピーできるね
対照的に可変参照は独占的オンリーワンになる
可変がなければ参照はいくつでもコピーできるね
対照的に可変参照は独占的オンリーワンになる
173仕様書無しさん
2025/01/31(金) 08:58:53.87 【結婚難】違反SEの代償【孤独死】
☆大損害だから稼働減らして収入増やせ☆
金稼ぎ妨害!
共働き妨害!
時間外労働違反
↓
偽装委託多重派遣
↓
低技術
↓
低収入
↓
結婚難
↓
孤独死
反社会な孤独死の現場
https://i.imgur.com/pALCFXJ.jpg
☆大損害だから稼働減らして収入増やせ☆
金稼ぎ妨害!
共働き妨害!
時間外労働違反
↓
偽装委託多重派遣
↓
低技術
↓
低収入
↓
結婚難
↓
孤独死
反社会な孤独死の現場
https://i.imgur.com/pALCFXJ.jpg
レスを投稿する
ニュース
- 【芸能】『バンダイナムコフェス』上海公演 日本人歌手・大槻マキが歌唱中に強制退場… 急に音を止められスタッフらしき人達に [冬月記者★]
- 「怒りに震えて涙が出た」 同性婚認めず「合憲」判断に原告が反発 「差別的な判決だ」 [ぐれ★]
- 橋下徹氏 高市首相“台湾有事”発言に「政治家の失言で一部の人でも仕事がキャンセルに…我々は認めていいのかな」疑問呈す [muffin★]
- 今後50年間、毎年100万人ずつ人口が減る…「少子化対策」の失敗で日本が迎える「死ぬまで搾取」というヤバい未来 ★6 [ぐれ★]
- 中国外務省「正式な発言撤回なければ受け入れず」 高市首相は台湾有事「存立危機事態」言及せずも「言及しないことと撤回は別問題」★5 [ぐれ★]
- 「インバウンド政策上、中国は重要」、訪日自粛で金子国交相「早く通常の状況に戻っていただきたい」★2 [ぐれ★]
- お前らに小田急足柄からJR足柄まで歩いて乗り換える罰をあたえる
- モーニングかめはめ波をかます(成功率100%)
- 追放者食堂みてるんだが・・・
- 【動画】上海バンダイナムコフェス、ワンピース歌ってる途中に中国政府「日本人の公演全面禁止」発令された瞬間強制終了 怖すぎ★4 [579392623]
- 【動画】上海バンダイナムコフェス、ワンピース歌ってる途中に中国政府「日本人の公演全面禁止」発令された瞬間強制終了 怖すぎ★5 [579392623]
- 【悲報】巨人阿部「賛否あるけど俺は松本剛は必要だと思って獲った。みんな良い刺激になってるね」
