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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
283: デフォルトの名無しさん [sage] 2024/06/20(木) 18:45:58.46 ID:zOlAS9GZ(1) AAS
使い分けのできないバカしかいないのかな?
309
(1): デフォルトの名無しさん [sage] 2024/06/22(土) 23:41:03.46 ID:jxx0duBQ(1) AAS
関数型というとfor文使うのではなくこんなイメージ

fn main() {
 std::env::args().skip(1).for_each(|file_name| {
  println!("{}", file_name);
  std::fs::read_to_string(&file_name).map(|lines| {
   lines.lines().enumerate().for_each(|(i, line)| {
    println!("{:>2
2(4): デフォルトの名無しさん [sage] 2024/05/27(月) 06:42:29.23 ID:T4AFD1f4(2/3) AAS
Rust The Book (日本語版)
外部リンク:doc.rust-jp.rs
Rust edition guide (日本語版)
外部リンク:doc.rust-jp.rs
Rust by example (日本語版)
外部リンク:doc.rust-jp.rs
Rust cookbook (日本語版)
外部リンク:uma0317.github.io
Rust API guideline (日本語版)
外部リンク:sinkuu.github.io
Rust nomicon book (日本語版)
外部リンク:doc.rust-jp.rs
Rust async book (日本語版)
外部リンク:async-book-ja.netlify.app
Rust WASM book (日本語版)
外部リンク:moshg.github.io
Rust embeded book (日本語版)
外部リンク:tomoyuki-nakabayashi.github.io
Rust enbeded discovery (日本語版)
外部リンク:tomoyuki-nakabayashi.github.io
Rust Design Patterns (日本語版)
外部リンク:qiita.com
外部リンク:qiita.com
Rust API guideline (日本語版)
外部リンク:sinkuu.github.io
}:{}", i + 1, line);
   })
  })
 })
}
342
(2): デフォルトの名無しさん [sage] 2024/06/24(月) 23:33:41.46 ID:FIb4AZ4T(1/2) AAS
>>328-329
なんかダサい
外部リンク:paiza.io
pub fn f(x: i32) -> i32 {
(
-2413f64*(x.pow(6) as f64)/120960f64
+739f64*(x.pow(5) as f64)/1260f64
-157991f64*(x.pow(4) as f64)/24192f64
+69551f64*(x.pow(3) as f64)/2016f64
-2691673f64*(x.pow(2) as f64)/30240f64
+88679f64*(x as f64)/840f64
-905f64/21f64
+0.5)
as i32
}
pub fn g(y: i32) -> i32 {
(
13f64*(y.pow(6) as f64)/120960f64
-(y.pow(5) as f64)/315f64
+1415f64*(y.pow(4) as f64)/24192f64
-1511f64*(y.pow(3) as f64)/2016f64
+144793f64*(y.pow(2) as f64)/30240f64
-3053f64*(y as f64)/280f64
+185f64/21f64
+0.5)
as i32
}
pub fn main() {
let a = vec![(1, 2), (2, 1), (3, 3), (4, 10), (6, 4), (8, 8), (10, 6)];
for (x, _y) in &a { println!("{}, {}", x, f(*x)); }
for (_x, y) in &a { println!("{}, {}", y, g(*y)); }
}
358: デフォルトの名無しさん [sage] 2024/06/25(火) 12:43:05.46 ID:qH1sgo3/(1/2) AAS
「Rustを学ぶためにC++を学ぶ必要があるか(学ぶといいか)」も定期的に沸くな

何度も見てて思うのが
「あなたはRustを学ぶ前にC++を学んでいたか」とYes/Noが一致して、平行線にしかならない議論なのでは
461: デフォルトの名無しさん [sage] 2024/06/29(土) 13:38:30.46 ID:xx5BdVU7(1) AAS
ダックタイピングがあるってどういう状態のことだろう
541: デフォルトの名無しさん [sage] 2024/07/01(月) 14:48:54.46 ID:JlB5uk0q(3/3) AAS
and_thenはor_elseに対してのantitheseだと思った
572
(1): デフォルトの名無しさん [sage] 2024/07/03(水) 06:25:46.46 ID:uJMJjlOC(1) AAS
>>570
570(2): デフォルトの名無しさん [sage] 2024/07/02(火) 23:44:50.93 ID:sYgKhdog(1) AAS
RustでGUIならこの5つ
外部リンク:iced.rs
外部リンク:slint.dev
外部リンク:tauri.app
外部リンク:www.egui.rs
外部リンク:dioxuslabs.com
方向性がそれぞれ異なるので目的に合わせて選ぶ
tauriはその中に入れるべきじゃないだろ
あれはReact/JSだぞ
677: デフォルトの名無しさん [sage] 2024/07/09(火) 14:43:14.46 ID:Tc+iYmTn(1) AAS
リファクタリングするとき
プログラム(CPU)の動作の副作用は起きないけど
コーディングの変更に対して副作用が大き過ぎるというか広過ぎる
693: デフォルトの名無しさん [sage] 2024/07/09(火) 23:22:06.46 ID:J+Fyw0mO(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);
}
トレイトは機能を表します
2つの異なる長さを持つ(受け取る)機能を定義しているのならば
正方形はその実装型にはなりえません
694: デフォルトの名無しさん [] 2024/07/09(火) 23:24:11.46 ID:KAvgjhF7(1/2) AAS
>>692
692(1): デフォルトの名無しさん [sage] 2024/07/09(火) 23:17:09.97 ID:dptasXVA(1) AAS
>>691
長方形がトレイトで正方形が構造体とか意味不明なんだが他の形はどっちにするんだ?
おかしいだろ
IRectanble トレイトとかに読み替えてくれ
これは設計的に問題のある例を恣意的に示しているので不自然な点はあるけど、意図は伝わると思う

分かる人は分かると思うけど、問題は「そもそも正方形はwidthとheightという2つの値を扱うインタエースを持つべきでない」というところなので、Rectangleトレイトを作った時点で破綻している
けどそれは設計の問題なので、トレイトという仕組みによってコンパイラが防げるものではないということ
698
(1): デフォルトの名無しさん [sage] 2024/07/09(火) 23:56:35.46 ID:ZNKPIxXk(3/3) AAS
>Rustのtraitとその実装型はis-aの関係ではなくhas-aの関係を持つ

すげーのが出てきたなこりゃw
832
(1): デフォルトの名無しさん [] 2024/07/13(土) 15:50:29.46 ID:mV5TIlCk(6/8) AAS
>>831
831(3): デフォルトの名無しさん [sage] 2024/07/13(土) 15:38:58.70 ID:MYuplL5h(2/3) AAS
>>830
それLSPのどの項目に違反してる?
LSPは振る舞いに関する形式的なものなのでそのような意味論にまでは踏み込んでいないよ
例えば
fn test_clone(x: impl Clone + PartialEq) {
 assert!(x.clone(), x);
}
はClone および PartialEq トレイトの振る舞いに依存したコードだけど、この振る舞いに反した型は作れるよね
トレイトは事後要件 (x.clone() == x) を定義できないし、そもそも Clone はそれを担保していないと主張することはできるけど、それならLPSって何のためにあるんだ?ってなるし
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.046s