[過去ログ] Rust part24 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
55: デフォルトの名無しさん [sage] 2024/06/05(水) 14:33:58.97 ID:jddDZazx(1) AAS
>>38,54
38(3): デフォルトの名無しさん [sage] 2024/06/03(月) 09:53:26.77 ID:oYPTQzXH(1/3) AAS
>>37
Windows クレートはもうかなり充実してるよ。
メタデータからの自動生成なので網羅的だし、 safe でいけるメソッドは safe になってる。
unsafe なのは本質的に unsafe なのでどうしようもないし。

Readme に書いてある例が古い Win32 API を使うスタイルの書き方だから印象が悪いのかなぁ……。
54(1): デフォルトの名無しさん [sage] 2024/06/05(水) 14:28:05.14 ID:vQWinlMd(1) AAS
C/C++のコード全体が常にunsafeすなわち自動的な安全保障なしなのに対して
Rustはsafe部分のコードが自動的に安全保障されるという明確な違いがある

定義するとは何かすら知らないレベルでRustやってるのかよw
135: デフォルトの名無しさん [sage] 2024/06/14(金) 21:29:25.97 ID:1kqNSQLr(2/2) AAS
>>133
133(1): デフォルトの名無しさん [sage] 2024/06/14(金) 19:13:14.40 ID:65JFUBxW(1) AAS
>>132
そんなつまらない欠陥じゃなくてC++ではなくRust選ぶ利点になりえる脆弱性を言ってよ
あなたがつまらんかどうかが評価軸じゃないので
601: デフォルトの名無しさん [] 2024/07/06(土) 14:56:55.97 ID:X3tW4qHs(1) AAS
タウリンなんていらん
eguiで充分
692
(1): デフォルトの名無しさん [sage] 2024/07/09(火) 23:17:09.97 ID:dptasXVA(1) AAS
>>691
691(7): デフォルトの名無しさん [] 2024/07/09(火) 22:57:23.83 ID:/lHavWP5(1) AAS
>>685
リスコフの置換原則は設計的な原則だから言語仕様で違反を防ぐことはできないぞ
悪名高い長方形・正方形の問題はトレイトがあっても起こり得る

trait Rectangle {
 fn set_width(&mut self, width: i32);
 fn set_height(&mut self, height: i32);
 fn width(&self) -> i32;
 fn height(&self) -> i32;
 fn area(&self) -> i32 { self.width() * self.height() }
}

struct Square { len: i32 }

impl Rectangle for Square {
 fn set_width(&mut self, width: i32) { self.len = width; }
 fn set_height(&mut self, height: i32) { self.len = width; }
 fn width(&self) -> i32 { self.len }
 fn height(&self) -> i32 { self.len }
}

fn func(x: &mut impl Rectangle) {
 x.set_width(3);
 x.set_height(4);

 // xが長方形であれば以下が成り立つはずだが、Square型を渡された場合に失敗する
 assert!(x.area() == 12);
}
長方形がトレイトで正方形が構造体とか意味不明なんだが他の形はどっちにするんだ?
おかしいだろ
774: デフォルトの名無しさん [sage] 2024/07/12(金) 13:01:13.97 ID:KyXC0KGT(3/7) AAS
>>771
771(1): デフォルトの名無しさん [sage] 2024/07/12(金) 10:57:31.20 ID:KyXC0KGT(2/7) AAS
誤解は色々あるけど「努力すれば必ずゼロコストになるカラクリ」が
あると思ってるならそれが誤解だね
クイックソートやハッシュテーブルと同じく、最悪の場合のコストは低くない
Rustのゼロコスト抽象化はそういう意味ではなくてRustの様々な抽象化仕様を実行時の追加コストゼロで実現していることでしょ

>>772
772(2): デフォルトの名無しさん [sage] 2024/07/12(金) 11:16:56.09 ID:LuKbokrL(2/9) AAS
間違ってたら指摘してくれ

メモリは唯一の所有者を持つ
所有者たる変数がスコープを抜けた時、もしくは所有者たる変数に他の値が代入された時、メモリは自動的に解放される
Rustの、メモリに関する様々な文法はひとえにレキシカルライフタイムのためである
レキシカルライフタイムすなわち字句的寿命は、プログラムを走らせなくともコンパイル時に変数の寿命が把握できる仕掛けである
メモリの使途に矛盾が発生しているとき、Rustコンパイラはエラーを吐く
値がムーブされないままスコープが尽きたらデストラクタが自動で呼ばれるだけでしょ
だからRcのように参照カウンタを用いて共有ownershipを提供する仕組みもあるよ
828: デフォルトの名無しさん [sage] 2024/07/13(土) 13:52:54.97 ID:E+PNnzD+(1/2) AAS
PartialOrd: PartialEqは
PartialEq(等価判定)を持つ型にPartialOrd(半順序判定)を追加するときに
a.partial_cmp(b) == Some(Ordering::Equal)

a.eq(b) (⇔ a == b)
が同じになることを期待してる

この場合の置換の対象は型のインスタンスではなく使われる型の関数だから
LSPをインスタンスの置換に限定するか処理の置換にまで拡張するかで結論が変わる

PartialOrdの追加はPartialEqを使ってる既存のコードに影響しないから
技術的にはLSPと無関係ともいえるし
PartialOrdとPartialEqの等価判定の互換性は概念的にLSPの対象とも考えられる
846: デフォルトの名無しさん [sage] 2024/07/14(日) 07:40:10.97 ID:iqWqiKXK(4/10) AAS
クラスのメソッド継承との決定的な違いは、このコードにメンバー変数は一切登場せず、つまりいかなる構成の型からも独立した抽象的なコードであること
853: デフォルトの名無しさん [sage] 2024/07/14(日) 12:47:51.97 ID:JssLuzWj(2/4) AAS
>>822
822(1): デフォルトの名無しさん [sage] 2024/07/13(土) 12:31:19.55 ID:IqeBToeS(1) AAS
rust始めたけどtokioまわりの非同期処理が難しい…
tokio 自体は難しくないけど
cargo test と組み合わせると難しくなる罠
933: デフォルトの名無しさん [sage] 2024/07/23(火) 01:10:26.97 ID:XvQFw5Nb(2/2) AAS
>>931
931(1): デフォルトの名無しさん [sage] 2024/07/22(月) 12:18:01.98 ID:7a9cZObY(2/2) AAS
つまりFromは重いデフォルトハッシャーに固定されてしまっている
FromIteratorを使えば自由に速いものを利用できる
let xxx = HashMap::<_, _, FxHash>::from_iter(array);
>let xxx = HashMap::<_, _, FxHash>::from_iter(array);
FxHashのところはFxBuildHasherだね
let xxx = FxHashMap::from_iter(array);と書いたほうがいろいろ親切

親切設計のライブラリなら
let xxx = AHashMap::from(array);
のようにFromIteratorだけでなくFromも使える
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.049s