公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
Web上の実行環境
https://play.rust-lang.org
日本語の情報
https://rust-jp.rs/
※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※C++との比較は専用スレへ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
※次スレは原則>>980が立てること
前スレ
Rust part14
https://mevius.5ch.net/test/read.cgi/tech/1644596656/
探検
Rust part15
■ このスレッドは過去ログ倉庫に格納されています
2022/05/12(木) 18:28:20.99ID:cuIcFT6k
613デフォルトの名無しさん
2022/06/11(土) 19:26:39.50ID:WsHL0uxM614デフォルトの名無しさん
2022/06/11(土) 23:25:25.63ID:HlAQKNMT なんでRound18なんて大昔の過去を?
615デフォルトの名無しさん
2022/06/12(日) 06:12:09.52ID:6S+GFICB616デフォルトの名無しさん
2022/06/12(日) 17:11:51.09ID:tUHADwRi Rustはver2.0にはなりませんって言ってるけど実質はとっくの昔にver2.0になってる
617デフォルトの名無しさん
2022/06/12(日) 19:14:45.66ID:geXDvND7 >>616
どういうこと?
どういうこと?
618デフォルトの名無しさん
2022/06/12(日) 20:36:02.36ID:nrxswUhC >>562 >>566
CheckedAddAssignにこだわる必要はないため、発想を転換して、
checked_add()の原関数であるoverflowing_add()を用いることで、
overflowing_add_assign()を用意して同じようにbool値を返せば解決する
具体的には以下のように引数はadd_assign()と同じでbool値を返せばよい
trait OverflowingAddAssign {
fn overflowing_add_assign(&mut self, rhs: &Self) -> bool;
}
オーバーフローするi8型〜u128型にはoverflowing_add()があるため実装はこうなる
let is_overflow;
(*self, is_overflow) = self.overflowing_add(*rhs);
is_overflow
この3行のコードでちゃんと最適化されるかどうかを確認するため、
単純にadd_assignを用いた場合、すなわち「*self += rhs」と比較すると
https://godbolt.org/z/WP3En8xM8
のアセンブリ出力となり、オーバーフローを返す以外は同一に最適化されることが確認できる
一方でオーバーフローしないBigUintなどの型への実装はこうなる
*self += rhs;
false
つまりオーバーフローの結果として常にfalseを返すので、
こちらは使う側でオーバーフローの扱いが消えてadd_assign部分のみに最適化される
したがってこのOverflowingAddAssignを用いてジェネリックに書けば、
どちらの型の場合であっても、非ジェネリックに書いた時と同一コードとなる
CheckedAddAssignにこだわる必要はないため、発想を転換して、
checked_add()の原関数であるoverflowing_add()を用いることで、
overflowing_add_assign()を用意して同じようにbool値を返せば解決する
具体的には以下のように引数はadd_assign()と同じでbool値を返せばよい
trait OverflowingAddAssign {
fn overflowing_add_assign(&mut self, rhs: &Self) -> bool;
}
オーバーフローするi8型〜u128型にはoverflowing_add()があるため実装はこうなる
let is_overflow;
(*self, is_overflow) = self.overflowing_add(*rhs);
is_overflow
この3行のコードでちゃんと最適化されるかどうかを確認するため、
単純にadd_assignを用いた場合、すなわち「*self += rhs」と比較すると
https://godbolt.org/z/WP3En8xM8
のアセンブリ出力となり、オーバーフローを返す以外は同一に最適化されることが確認できる
一方でオーバーフローしないBigUintなどの型への実装はこうなる
*self += rhs;
false
つまりオーバーフローの結果として常にfalseを返すので、
こちらは使う側でオーバーフローの扱いが消えてadd_assign部分のみに最適化される
したがってこのOverflowingAddAssignを用いてジェネリックに書けば、
どちらの型の場合であっても、非ジェネリックに書いた時と同一コードとなる
619デフォルトの名無しさん
2022/06/12(日) 20:47:24.48ID:nrxswUhC >>577
一般的に参照返すイテレータ類を実装する場合の注意点として、
1. let x0 = x_iter.next();
2. let x1 = x_iter.next();
3. ここで x0 の指す値を使う
順にこのような使い方をした時の挙動として、以下4パターンが考えられる
A. ✕ 実行時エラーとなる
B. ✕ x0の指す値が変化してしまう (次のx1の指す値と同一になってしまう)
C. ○ x0もx1もそれぞれ正しい値を指す
D. ○ コンパイル時エラーとなる
Rcとget_mut()を使った>>511のコードがNGのパターンA.で、これを避けるために、
Rc<RefCell>を使う提案のようだが、それもNGのパターンB.となってしまう
Rcとmake_mut()を使えばパターンC.となり、これがRc利用の場合の解となる
しかし参照を返すイテレータ自身がmake_mut()でclone()するのは役割として過剰である
切り分けとしてはイテレータを使う側が必要に応じてclone()するのが望ましい
そういうコードへ適切に誘導できる道が、コンパイル時エラーで示すパターンD.
具体的には、似非IteratorであるStreamingIteratorを用いるか、
Rust本命のGATsを用いたLendingIterator (=GATs適用後のIterator) を用いると、
clone()が必要な場面ではコンパイル時エラーにより知らせてくれる
もちろん普通にnext()ループ内の利用ならばclone()の必要なくコンパイルが通る
一般的に参照返すイテレータ類を実装する場合の注意点として、
1. let x0 = x_iter.next();
2. let x1 = x_iter.next();
3. ここで x0 の指す値を使う
順にこのような使い方をした時の挙動として、以下4パターンが考えられる
A. ✕ 実行時エラーとなる
B. ✕ x0の指す値が変化してしまう (次のx1の指す値と同一になってしまう)
C. ○ x0もx1もそれぞれ正しい値を指す
D. ○ コンパイル時エラーとなる
Rcとget_mut()を使った>>511のコードがNGのパターンA.で、これを避けるために、
Rc<RefCell>を使う提案のようだが、それもNGのパターンB.となってしまう
Rcとmake_mut()を使えばパターンC.となり、これがRc利用の場合の解となる
しかし参照を返すイテレータ自身がmake_mut()でclone()するのは役割として過剰である
切り分けとしてはイテレータを使う側が必要に応じてclone()するのが望ましい
そういうコードへ適切に誘導できる道が、コンパイル時エラーで示すパターンD.
具体的には、似非IteratorであるStreamingIteratorを用いるか、
Rust本命のGATsを用いたLendingIterator (=GATs適用後のIterator) を用いると、
clone()が必要な場面ではコンパイル時エラーにより知らせてくれる
もちろん普通にnext()ループ内の利用ならばclone()の必要なくコンパイルが通る
620デフォルトの名無しさん
2022/06/12(日) 20:59:35.22ID:nrxswUhC 実際に >>618のOverflowingAddAssignを用いてLendingIteratorで実装すると
以下のようになり、GATsを用いている以外は現状のIteratorともちろん同じ形
自己参照を返せるようになった点のみ異なる
impl<T: OverflowingAddAssign> LendingIterator for Fibonacci<T> {
type Item<'a> = &'a T where Self: 'a;
fn next<'a>(&'a mut self) -> Option<Self::Item<'a>> {
if self.is_overflow {
return None;
}
if self.is_first {
self.is_first = false;
} else {
self.is_overflow = self.p.overflowing_add_assign(&self.q);
std::mem::swap(&mut self.p, &mut self.q);
}
Some(&self.p)
}
}
is_first処理は >>511のコードでの「iter::once(p.clone()).chain(...」部分であり必須
また、前述のようにBigUintで用いれば is_overflow が常にfalseのため最適化で消えて、
値の更新部分は「self.p += &self.q」のみが残り非ジェネリックと同一コードとなる
したがって、上述のコードがどの型でも最善に動作するコードとなるだろう
以下のようになり、GATsを用いている以外は現状のIteratorともちろん同じ形
自己参照を返せるようになった点のみ異なる
impl<T: OverflowingAddAssign> LendingIterator for Fibonacci<T> {
type Item<'a> = &'a T where Self: 'a;
fn next<'a>(&'a mut self) -> Option<Self::Item<'a>> {
if self.is_overflow {
return None;
}
if self.is_first {
self.is_first = false;
} else {
self.is_overflow = self.p.overflowing_add_assign(&self.q);
std::mem::swap(&mut self.p, &mut self.q);
}
Some(&self.p)
}
}
is_first処理は >>511のコードでの「iter::once(p.clone()).chain(...」部分であり必須
また、前述のようにBigUintで用いれば is_overflow が常にfalseのため最適化で消えて、
値の更新部分は「self.p += &self.q」のみが残り非ジェネリックと同一コードとなる
したがって、上述のコードがどの型でも最善に動作するコードとなるだろう
621デフォルトの名無しさん
2022/06/12(日) 21:33:27.12ID:HOCAPH7I NAVERまとめを彷彿とさせるレス乙
3~4日もかけて頑張って調べたのは讃えるが
特質の異なるものを必要もなくジェネリック化することがアンチパターンだということに早く気づいてね
3~4日もかけて頑張って調べたのは讃えるが
特質の異なるものを必要もなくジェネリック化することがアンチパターンだということに早く気づいてね
622デフォルトの名無しさん
2022/06/12(日) 21:51:32.06ID:rC/Ton17 これは同じものだからジェネリックでいいんじゃね
623デフォルトの名無しさん
2022/06/12(日) 22:02:56.78ID:geXDvND7624デフォルトの名無しさん
2022/06/12(日) 22:16:28.43ID:McWr7xMA add系は#[inline]だから大丈夫
625デフォルトの名無しさん
2022/06/12(日) 22:22:02.34ID:geXDvND7 >>624
構造体メンバの値はグローバル変数なんかと同じで関数外で値が変更される可能性があるので
メンバが特定の値しか取らないことを暫定として最適化するためには、
crateの範囲を超えてプログラム全体で値が設定されうる箇所が他にないことを確認するか
メンバが可視な範囲で確認する必要があると思うけど、
前者をやるためにはリンク時最適化が必要だし
後者ならメンバの可視性をLLVMに渡さないといけないと思う
rustcとLLVMはそこまでやってるの?
構造体メンバの値はグローバル変数なんかと同じで関数外で値が変更される可能性があるので
メンバが特定の値しか取らないことを暫定として最適化するためには、
crateの範囲を超えてプログラム全体で値が設定されうる箇所が他にないことを確認するか
メンバが可視な範囲で確認する必要があると思うけど、
前者をやるためにはリンク時最適化が必要だし
後者ならメンバの可視性をLLVMに渡さないといけないと思う
rustcとLLVMはそこまでやってるの?
626デフォルトの名無しさん
2022/06/12(日) 22:54:00.11ID:E86JsxIR rust結構面白いからマイクロソフトがVisualStudioでRustでWindowsFormを作れるようにしてくれればなあ
627デフォルトの名無しさん
2022/06/12(日) 22:59:17.60ID:MphJhZqp628デフォルトの名無しさん
2022/06/12(日) 23:07:42.57ID:McWr7xMA >>627
assignでない演算は生成のため内部でcloneが発生して無駄と既に結論が出ている
assignでない演算は生成のため内部でcloneが発生して無駄と既に結論が出ている
629デフォルトの名無しさん
2022/06/12(日) 23:11:14.31ID:0LaPlWrL GATがstableになるの意外と近い予定なんだな
年単位で先のことかと思ってた
年単位で先のことかと思ってた
630デフォルトの名無しさん
2022/06/12(日) 23:18:22.58ID:H16c0lbs >>625
Rustでそれは起きない
書き換えるには所有権か&mutが必要でコンパイラは全て把握している
更に構造体のメンバーはpub指定がない限り他者はアクセス不能
つまり今回ならばnext()しかメンバー書き換えしないとコンパイラは確定できる
Rustでそれは起きない
書き換えるには所有権か&mutが必要でコンパイラは全て把握している
更に構造体のメンバーはpub指定がない限り他者はアクセス不能
つまり今回ならばnext()しかメンバー書き換えしないとコンパイラは確定できる
631デフォルトの名無しさん
2022/06/12(日) 23:25:01.40ID:geXDvND7 >>630
その最適化するのはLLVMだけどLLVMが最適化できるだけの情報を渡してるの?というのが聞きたいこと
その最適化するのはLLVMだけどLLVMが最適化できるだけの情報を渡してるの?というのが聞きたいこと
632デフォルトの名無しさん
2022/06/13(月) 00:14:58.10ID:RutuvYDu >>623
その通りRustコンパイラが賢いことを確認したよ
is_overflowが常にfalseとなることを察知してNoneを返すことが無くなったみたい
Noneが来ない利用側のwhile let Some(n) = iter.next()は無限ループのコードとなっちゃった
さらにwhile loopより後ろのコードは永遠未達と判断されて完全に消えた
その通りRustコンパイラが賢いことを確認したよ
is_overflowが常にfalseとなることを察知してNoneを返すことが無くなったみたい
Noneが来ない利用側のwhile let Some(n) = iter.next()は無限ループのコードとなっちゃった
さらにwhile loopより後ろのコードは永遠未達と判断されて完全に消えた
633デフォルトの名無しさん
2022/06/13(月) 00:32:02.84ID:XmIGhHAx634デフォルトの名無しさん
2022/06/13(月) 00:46:44.89ID:BEV+i+nu >>620
GATってIteratorとか既存TraitのAssosiate Typeに直接ライフタイム書けない仕様になったの?
LendingIteratorみたいに別のTraitを使わないといけないようならイテレータ関連の仕組みが2重なって使い勝手が悪い
GATってIteratorとか既存TraitのAssosiate Typeに直接ライフタイム書けない仕様になったの?
LendingIteratorみたいに別のTraitを使わないといけないようならイテレータ関連の仕組みが2重なって使い勝手が悪い
635デフォルトの名無しさん
2022/06/13(月) 00:50:16.18ID:WmCB7dh7636デフォルトの名無しさん
2022/06/13(月) 00:56:09.87ID:WmCB7dh7637デフォルトの名無しさん
2022/06/13(月) 12:04:19.24ID:GDAgVCx4 >>632
おー、そんな賢いんだ。すごい
ちなみにfn mainとイテレータの定義は同じcrateに含まれている?
lib crateでイテレータを定義してbin crateから使った場合にどうなるかも気になる
おー、そんな賢いんだ。すごい
ちなみにfn mainとイテレータの定義は同じcrateに含まれている?
lib crateでイテレータを定義してbin crateから使った場合にどうなるかも気になる
638デフォルトの名無しさん
2022/06/13(月) 14:28:57.42ID:HonuYlRO639デフォルトの名無しさん
2022/06/13(月) 17:16:12.55ID:GB/2aB1F やめてくれ
汚コードまみれになる
汚コードまみれになる
640デフォルトの名無しさん
2022/06/13(月) 19:44:34.63ID:oVc0GyRX 乱数系のモジュールの仕様変更がかなりガッツリあったみたいなんだけど
Rustってこういうことよく起るの?
なんかWeb系みたいなノリを感じたんだが合ってる?
Rustってこういうことよく起るの?
なんかWeb系みたいなノリを感じたんだが合ってる?
641デフォルトの名無しさん
2022/06/13(月) 19:57:14.15ID:86dwWfAN なんのはなしだ
642デフォルトの名無しさん
2022/06/13(月) 19:58:13.01ID:8KDu5nut >>640
人に読んでもらう文章は重要なところ省いたら読んでもらえないよ
人に読んでもらう文章は重要なところ省いたら読んでもらえないよ
643デフォルトの名無しさん
2022/06/13(月) 19:59:25.24ID:GDAgVCx4 >>640
標準ライブラリで破壊的変更はほとんどない
外部crateなら概ねsemverに従ってるし lockfile の仕組みもあるから、
以前ビルドできていたものがビルドできなくなることもほとんどない
標準ライブラリで破壊的変更はほとんどない
外部crateなら概ねsemverに従ってるし lockfile の仕組みもあるから、
以前ビルドできていたものがビルドできなくなることもほとんどない
644デフォルトの名無しさん
2022/06/13(月) 20:37:45.98ID:XXqnAuVB >>638
サポートってどの程度のサポートを期待しているんだ?
MSがRustコンパイラー出せばWindowsのRust用フレームワーク出すんだろうがな
出さないなら、C/C++/C#のAPI/フレームワークをRustからとりあえず使えるようにしました
程度のサポートになるだろう。
期待しているのはRust用フレームワークであってRustからとりあえず使えるよじゃないだろ?
サポートってどの程度のサポートを期待しているんだ?
MSがRustコンパイラー出せばWindowsのRust用フレームワーク出すんだろうがな
出さないなら、C/C++/C#のAPI/フレームワークをRustからとりあえず使えるようにしました
程度のサポートになるだろう。
期待しているのはRust用フレームワークであってRustからとりあえず使えるよじゃないだろ?
645デフォルトの名無しさん
2022/06/13(月) 20:37:53.20ID:oVc0GyRX646デフォルトの名無しさん
2022/06/13(月) 20:43:42.90ID:cs6TlBtz647デフォルトの名無しさん
2022/06/13(月) 20:52:20.46ID:oVc0GyRX648デフォルトの名無しさん
2022/06/13(月) 23:01:34.06ID:JmWkv6oB >理由は標準入りしてしまうと破壊的変更ができなくなって腐るから
なんという本末転倒感
なんという本末転倒感
649デフォルトの名無しさん
2022/06/14(火) 00:25:58.88ID:DOq4xEj+ 基本的にRustはシンプルに最小限の言語構成部分しか標準ライブラリに持たない方針
つまり各プログラミング言語毎に標準ライブラリの意味合いや範囲が異なるのと同じ
だから乱数でも正規表現でも何でもRustでは外部クレートに存在する
非同期だって基本構成部分のasync/await/Futureは言語として持つけど
非同期ランタイムや非同期ライブラリは外部クレート
つまり各プログラミング言語毎に標準ライブラリの意味合いや範囲が異なるのと同じ
だから乱数でも正規表現でも何でもRustでは外部クレートに存在する
非同期だって基本構成部分のasync/await/Futureは言語として持つけど
非同期ランタイムや非同期ライブラリは外部クレート
650デフォルトの名無しさん
2022/06/14(火) 00:42:56.77ID:OVbm/pyy OptionやResultの便利メソッドはどんどん追加されてるし別に標準ライブラリを最小限のものにしようとはしてないでしょ
651デフォルトの名無しさん
2022/06/14(火) 00:49:05.73ID:o3U2MVOf >>649
>最小限の言語構成部分しか標準ライブラリに持たない方針
俺もそんな方針だと思う
これが良いのかどうかは分んが。
標準ライブラリだとコンパイラ屋がコンパイラを出す限りサポート・メンテされるのが
他の言語では標準ライブラリなのが外部クレートだと、将来これをメンテする奴がいないになって
放置になり困ったになる可能性あるからな。
>最小限の言語構成部分しか標準ライブラリに持たない方針
俺もそんな方針だと思う
これが良いのかどうかは分んが。
標準ライブラリだとコンパイラ屋がコンパイラを出す限りサポート・メンテされるのが
他の言語では標準ライブラリなのが外部クレートだと、将来これをメンテする奴がいないになって
放置になり困ったになる可能性あるからな。
652デフォルトの名無しさん
2022/06/14(火) 01:01:42.50ID:DOq4xEj+ >>650
それは最小限の意味合いの受け取り方が違っているだけで同じ
Option/ResultはRustにとって言語構成部分
そしてそのメソッドは強いて言えば多彩な制御構文にも相当する
だからRustの最小限の標準ライブラリに含まれているし必要性が認識されればメソッドも増える
それは最小限の意味合いの受け取り方が違っているだけで同じ
Option/ResultはRustにとって言語構成部分
そしてそのメソッドは強いて言えば多彩な制御構文にも相当する
だからRustの最小限の標準ライブラリに含まれているし必要性が認識されればメソッドも増える
653デフォルトの名無しさん
2022/06/14(火) 01:15:57.14ID:DOq4xEj+ >>651
それは「サポートする人がいなくなればサポートされなくなる」という当たり前のことでRustとは別の一般的な話
どんな製品でも、どんなライブラリでも、どんな言語でも、同じ
そして基本構成部分を含むRust本体の改善&メンテと、それ以外のライブラリのそれとは明らかに別の話たから切り離されているのも自然
それは「サポートする人がいなくなればサポートされなくなる」という当たり前のことでRustとは別の一般的な話
どんな製品でも、どんなライブラリでも、どんな言語でも、同じ
そして基本構成部分を含むRust本体の改善&メンテと、それ以外のライブラリのそれとは明らかに別の話たから切り離されているのも自然
654デフォルトの名無しさん
2022/06/14(火) 01:33:47.46ID:Sv0LbY5c 同じではあるがcargoの性質で余計に面倒な状態になってる。
この辺が低レイヤー向けと相性が悪い部分だな。
この辺が低レイヤー向けと相性が悪い部分だな。
655デフォルトの名無しさん
2022/06/14(火) 02:16:38.57ID:DOq4xEj+ >>654
低レイヤー向けのプログラミングをRustでしていて相性の悪さで困ったことはないが具体的に何だろう?
低レイヤー向けのプログラミングをRustでしていて相性の悪さで困ったことはないが具体的に何だろう?
656デフォルトの名無しさん
2022/06/14(火) 02:19:17.55ID:0h5AdYzJ 聞きかじりだけどクロスコンパイルとかやりたかったらxargo使うもんなんじゃないの
657デフォルトの名無しさん
2022/06/14(火) 02:25:36.70ID:RiQN/QJO 同梱されるライブラリが巨大な言語で
とんでもないクソ仕様が最初に入ってしまうとか
メンテナがいなくなったけど互換性維持で簡単に削除できないとか
色々あるからなあ
とんでもないクソ仕様が最初に入ってしまうとか
メンテナがいなくなったけど互換性維持で簡単に削除できないとか
色々あるからなあ
658デフォルトの名無しさん
2022/06/14(火) 02:36:05.02ID:OVbm/pyy >>652
確かにOptionやResultそのものは言語機能にも関わってくる基本的な構成要素だけど、
OptionやResultの便利メソッドは外部crateでも定義できるよね
また、HashMapやBTreeMapなどは "言語" の構成要素ではないし、
最近ではonce_cellという外部crateで実現できていたものをstdに取り込もうとしている
"言語" を構成する最小限の要素に絞るのであれば、これらは外部crateで実現すればよくて標準ライブラリに入れなくても良いはずだよね
おそらく、標準ライブラリに取り込むものは厳選してコンパクトさを保つことを前提に、
広く使われていてAPIが安定しているものは取り込んでいくというスタンスなんだと思うよ
確かにOptionやResultそのものは言語機能にも関わってくる基本的な構成要素だけど、
OptionやResultの便利メソッドは外部crateでも定義できるよね
また、HashMapやBTreeMapなどは "言語" の構成要素ではないし、
最近ではonce_cellという外部crateで実現できていたものをstdに取り込もうとしている
"言語" を構成する最小限の要素に絞るのであれば、これらは外部crateで実現すればよくて標準ライブラリに入れなくても良いはずだよね
おそらく、標準ライブラリに取り込むものは厳選してコンパクトさを保つことを前提に、
広く使われていてAPIが安定しているものは取り込んでいくというスタンスなんだと思うよ
659デフォルトの名無しさん
2022/06/14(火) 02:42:44.72ID:OVbm/pyy あー、rustで書かれたプログラム全体の中でのデファクトスタンダードとかお作法とかも含めて言語って言っているのかな
そうなのであれば特に異論ないです
そうなのであれば特に異論ないです
660デフォルトの名無しさん
2022/06/14(火) 02:45:28.28ID:xoZMylRu マンパワーが足りないから選択と集中で切り捨ててるだけ
利用者がそれを受け入れてるのは切り捨てた部分をコミュニティで支援するからコア機能の開発に力を注げってこと
利用者がそれを受け入れてるのは切り捨てた部分をコミュニティで支援するからコア機能の開発に力を注げってこと
661デフォルトの名無しさん
2022/06/14(火) 02:53:05.21ID:R/3cLRA4 >>657
iostreamのことかああああ!!
iostreamのことかああああ!!
662デフォルトの名無しさん
2022/06/14(火) 03:08:52.27ID:aUgYAX3K >>661
アレをRustに取り入れようという動きはないのかな?
アレをRustに取り入れようという動きはないのかな?
663デフォルトの名無しさん
2022/06/14(火) 18:56:17.12ID:HX1wvnNi >>648
利便性ではなく一貫性で標準を決めているってことだろ
利便性ではなく一貫性で標準を決めているってことだろ
664デフォルトの名無しさん
2022/06/15(水) 14:46:59.83ID:LjsAAUyE >>658
Rustの利点はOption, Resultがmatchなどの構文で評価できる事、演算子もあるが演算子オーバーロードができる言語であれば同様のことができてしまうがC++23とか26とかで提案されていたinspectはmatchそのもの
Rustの利点はOption, Resultがmatchなどの構文で評価できる事、演算子もあるが演算子オーバーロードができる言語であれば同様のことができてしまうがC++23とか26とかで提案されていたinspectはmatchそのもの
665デフォルトの名無しさん
2022/06/16(木) 15:29:08.46ID:13+3Y2cU Rustの活用でElectronよりも軽くて速いアプリフレームワーク「Tauri」が安定版に
まずはデスクトップから。モバイル・Webへの対応も進行中
https://forest.watch.impress.co.jp/docs/news/1417148.html
まずはデスクトップから。モバイル・Webへの対応も進行中
https://forest.watch.impress.co.jp/docs/news/1417148.html
666デフォルトの名無しさん
2022/06/16(木) 16:07:33.42ID:Ry+36K98 TauriとYewで純正Rustデスクトップアプリ開発か、
あるいはTauriとVue.jsでフロントエンドのみJavascriptでデスクトップアプリ開発か、
あるいはTauriとVue.jsでフロントエンドのみJavascriptでデスクトップアプリ開発か、
667デフォルトの名無しさん
2022/06/16(木) 16:51:56.72ID:TPrqrDPX Tauri + Vite + Vue 3 + Vuetify 3でデスクトップアプリ開発オラァ!!!
668デフォルトの名無しさん
2022/06/16(木) 19:39:52.77ID:3W1WJ+ID そういやAtom開発者がRustで書き直した究極のエディター「Zed」はどうなったんや。
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1374/986/amp.index.html
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1374/986/amp.index.html
669デフォルトの名無しさん
2022/06/16(木) 19:54:27.31ID:hIo52KfN >>665
PC Watchが報じるほどのニュースか、これ?
PC Watchが報じるほどのニュースか、これ?
670デフォルトの名無しさん
2022/06/16(木) 20:36:05.07ID:qYRKaF3V671デフォルトの名無しさん
2022/06/16(木) 20:52:57.67ID:rVOBJfNW フレームワークおじさんきちゃったか
672デフォルトの名無しさん
2022/06/16(木) 21:28:18.61ID:5USgn4My rust製フレームワークの話なら歓迎、jsは該当スレでよろ
673デフォルトの名無しさん
2022/06/16(木) 22:27:59.11ID:/ddt6fDk >>670
俺的にはそれなんかバックにC/C++のVulkan系を用いたものって気がするんだよな
俺的にはそれなんかバックにC/C++のVulkan系を用いたものって気がするんだよな
674デフォルトの名無しさん
2022/06/17(金) 01:45:23.89ID:mZKsuJMX rustでgpuなんか使い始めたらライブラリぶっ壊れまくるぞ
675デフォルトの名無しさん
2022/06/17(金) 08:27:34.98ID:8YmvneAf ?
676デフォルトの名無しさん
2022/06/17(金) 15:39:33.09ID:NH7eG327 俺も今日からラスタシアンだからよろしくな
シャドーイングいいねアンダースコアで区切った同じような名前の変数が同一スコープ内に増え続けるのが嫌でイライラしてたらからこの仕様はめちゃ好き
シャドーイングいいねアンダースコアで区切った同じような名前の変数が同一スコープ内に増え続けるのが嫌でイライラしてたらからこの仕様はめちゃ好き
677デフォルトの名無しさん
2022/06/17(金) 17:57:54.34ID:gT1dTx1o >>676
カタカタで書くとラステイシャンかラステイションだからよろしくな
カタカタで書くとラステイシャンかラステイションだからよろしくな
678デフォルトの名無しさん
2022/06/18(土) 06:02:27.98ID:ib599DIL 全然関係無いんだけど
最近の言語って使ってる人達に名前つけるじゃん
パイソニスタとかPHPerみたいな
CとかC++にもあるのかなー?とか考えてた時に思い出したんだけど
Pythonでモヒカンとか言ってる人達いるじゃん
アレの語源は何なの?
最近の言語って使ってる人達に名前つけるじゃん
パイソニスタとかPHPerみたいな
CとかC++にもあるのかなー?とか考えてた時に思い出したんだけど
Pythonでモヒカンとか言ってる人達いるじゃん
アレの語源は何なの?
679はちみつ餃子 ◆8X2XSCHEME
2022/06/18(土) 11:43:40.01ID:vGEU23LW >>678
Python 関連の用語としては知らんけど、これのこと?
https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%92%E3%82%AB%E3%83%B3%E6%97%8F_(%E3%83%8D%E3%83%83%E3%83%88%E7%94%A8%E8%AA%9E)
Python 関連の用語としては知らんけど、これのこと?
https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%92%E3%82%AB%E3%83%B3%E6%97%8F_(%E3%83%8D%E3%83%83%E3%83%88%E7%94%A8%E8%AA%9E)
680デフォルトの名無しさん
2022/06/18(土) 11:52:07.94ID:quioMmSC モヒカン族とか、一部の人間が使ってるだけでネットではろくに聞かない言葉だね
681デフォルトの名無しさん
2022/06/18(土) 12:19:14.82ID:ib599DIL682デフォルトの名無しさん
2022/06/18(土) 12:29:31.13ID:XkkeHcIr 俺は本場海外の用語以外は一切使わない陰キャチー牛の日本人が勝手な造語の和製英語とかクソダサいからな
683デフォルトの名無しさん
2022/06/18(土) 12:41:40.55ID:rUpNWN/L 2005~2010頃の技術コミュニティではよく聞いたけど
最近はアンチハラスメントポリシーに抵触するから使われなくなった
最近はアンチハラスメントポリシーに抵触するから使われなくなった
684デフォルトの名無しさん
2022/06/18(土) 13:28:43.26ID:n5ZvcUIJ Rust サビちゃん
Python ヘビちゃん
Python ヘビちゃん
685デフォルトの名無しさん
2022/06/18(土) 13:35:45.47ID:n5ZvcUIJ サビちゃんでもありヘビちゃんでもありヘジたんでもあり職場では犬たん++
686はちみつ餃子 ◆8X2XSCHEME
2022/06/18(土) 13:37:07.64ID:vGEU23LW >>678
C 使いや C++ 使いのことは Cer とか C++er と書いたりすることはあるが、どう読むべきなのかわからぬ……。
C 使いや C++ 使いのことは Cer とか C++er と書いたりすることはあるが、どう読むべきなのかわからぬ……。
687デフォルトの名無しさん
2022/06/18(土) 13:42:03.39ID:n5ZvcUIJ >>686
社畜
社畜
688デフォルトの名無しさん
2022/06/18(土) 13:48:09.17ID:n5ZvcUIJ この世の中あまたの言語があるのになぜCやC++でコード書くかと言えば仕事だから
689デフォルトの名無しさん
2022/06/18(土) 14:09:02.52ID:XkkeHcIr 普段仕事でC++使わない俺からするとRustめちゃくちゃわかりやすくて触ってて楽しい
特に配列やコレクションの扱い易さが段違いだわ
特に配列やコレクションの扱い易さが段違いだわ
690デフォルトの名無しさん
2022/06/18(土) 14:30:49.67ID:n5ZvcUIJ >>689
まあ他の言語触ると扱いやすくて気絶するから触るな
まあ他の言語触ると扱いやすくて気絶するから触るな
691デフォルトの名無しさん
2022/06/18(土) 14:57:08.56ID:iczP/r4h ※お話の途中ですが蟹が通ります
,、_,、
三 ( ´・ω・`)
三 /ヽ /ヽ (V) (V)
三ノ  ̄ ゝ 三 ミ (´・ω・`) ミ
タタタッ サササッ
,、_,、
三 ( ´・ω・`)
三 /ヽ /ヽ (V) (V)
三ノ  ̄ ゝ 三 ミ (´・ω・`) ミ
タタタッ サササッ
692デフォルトの名無しさん
2022/06/18(土) 15:02:32.97ID:hqbe2tQH そのカニもらって食べちゃうね
693デフォルトの名無しさん
2022/06/18(土) 15:34:56.20ID:XkkeHcIr 命名規則のガイドラインがスネークケースなのがC/C++に配慮した結果なのかなぁって気がするけどまぁ慣れの問題だから文句ないよ
694デフォルトの名無しさん
2022/06/18(土) 19:21:06.68ID:M9fy3K3m 公式ドキュメントにRustは式指向言語ですってあるんだが式指向とはなんぞや?
695デフォルトの名無しさん
2022/06/18(土) 19:25:35.79ID:1ZLmOyHM 制御構文が文じゃなくて式になってて値を返すという意味かと
696デフォルトの名無しさん
2022/06/18(土) 19:54:48.42ID:vxK0JF3c 終端にセミコロンつけたら式じゃなく文になっちゃうとか独特だよね
fn five() -> i32 { 5 }とかfn five() -> i32 { 5 };って書けた方が違和感ない気がするんだけどね
fn five() -> i32 { 5 }とかfn five() -> i32 { 5 };って書けた方が違和感ない気がするんだけどね
697デフォルトの名無しさん
2022/06/18(土) 20:32:50.72ID:aTjkq+5e Rustはラムダ引数の型推論が多くの他の言語とは異なって機能するんだよ
698デフォルトの名無しさん
2022/06/18(土) 21:11:11.71ID:6CHzGsUP 最近、ゲームのRustが人気過ぎて検索に支障が出てる
699デフォルトの名無しさん
2022/06/18(土) 22:17:14.37ID:ZZmk5y2Z >>694
日本語訳は公式じゃないから
今はもう公式では式指向(expression oriented)という言葉は使われてない
式指向言語の意味を知りたければwikiでもどうぞ
https://en.wikipedia.org/wiki/Expression-oriented_programming_language
日本語訳は公式じゃないから
今はもう公式では式指向(expression oriented)という言葉は使われてない
式指向言語の意味を知りたければwikiでもどうぞ
https://en.wikipedia.org/wiki/Expression-oriented_programming_language
700デフォルトの名無しさん
2022/06/19(日) 00:35:13.44ID:HLAvlKQn VTuberやストリーマーの間で人気を博しているサバイバルゲーム「RUST」とは?
https://www.moguravr.com/vtuber-rust/
https://www.moguravr.com/vtuber-rust/
701デフォルトの名無しさん
2022/06/19(日) 01:08:17.73ID:WtnMKA9r Goを見習って、Rustlangで検索してくださいね
702デフォルトの名無しさん
2022/06/19(日) 05:08:01.71ID:UsMsALi7 rust lang OR 言語 -go
703デフォルトの名無しさん
2022/06/19(日) 07:36:52.36ID:kKndzz48 Rustではboolを論理値と訳してるけど言語ごとに揺らぎがあるのはなんでだろうね
個人的に真偽値を使ってるけど真理値って解釈もあるしこれも定義は別で厳密には違うけどRustとしては解釈は同じで違いはないってことなのかな
個人的に真偽値を使ってるけど真理値って解釈もあるしこれも定義は別で厳密には違うけどRustとしては解釈は同じで違いはないってことなのかな
704デフォルトの名無しさん
2022/06/19(日) 08:12:44.50ID:Nk1h87ob 作った人が違うんだから揺らぎがあるのは当然だろ
705デフォルトの名無しさん
2022/06/19(日) 09:35:04.20ID:pSFkutGr 作った人というより訳した人の違い
Rustの日本語書籍でも統一されてるわけじゃない
論理値はもともとlogical valuesの訳語
>Rustではboolを論理値と訳してるけど
正しくは「The Bookの日本語訳ではBooleanを論理値と訳してるところがあるけど」
Rustの日本語書籍でも統一されてるわけじゃない
論理値はもともとlogical valuesの訳語
>Rustではboolを論理値と訳してるけど
正しくは「The Bookの日本語訳ではBooleanを論理値と訳してるところがあるけど」
706デフォルトの名無しさん
2022/06/19(日) 09:50:34.90ID:KbscZGS+ 手元のRust本見てみたけど真偽値も真理値もあるね
個人的には真偽値かな
個人的には真偽値かな
707デフォルトの名無しさん
2022/06/19(日) 10:18:36.03ID:MGBoiv+i 型は論理型と言いたくなる。真偽値型ってのもたまに聞くけど。
708デフォルトの名無しさん
2022/06/19(日) 10:32:50.28ID:YciZ0/bi ブール型でええやん
709デフォルトの名無しさん
2022/06/19(日) 11:02:28.95ID:McUuM60V the bookの日本語訳は翻訳の質が低いしアップデートもされてないからrustを本気で勉強したい人は読まない方がいいと思う
710デフォルトの名無しさん
2022/06/19(日) 11:11:00.25ID:KAsrUTco https://jp.mathworks.com/help/matlab/logical-operations.html
> logical データ型を使用して boolean データを表現します
matlabではlogicalってデータ型があって中身は0か1
false, trueも結局はlogicalの0と1でしかない
https://doc.rust-lang.org/std/primitive.bool.html
> The bool represents a value, which could only be either true or false.
> If you cast a bool into an integer, true will be 1 and false will be 0.
一方rustではtrueもfalseも依然としてboolのまま
> logical データ型を使用して boolean データを表現します
matlabではlogicalってデータ型があって中身は0か1
false, trueも結局はlogicalの0と1でしかない
https://doc.rust-lang.org/std/primitive.bool.html
> The bool represents a value, which could only be either true or false.
> If you cast a bool into an integer, true will be 1 and false will be 0.
一方rustではtrueもfalseも依然としてboolのまま
711デフォルトの名無しさん
2022/06/19(日) 11:23:29.55ID:2cctUuao ブール値のブールの意味を知らん人が多いのかもしれない
ブール値より真偽値型がいいな
ブール値より真偽値型がいいな
712デフォルトの名無しさん
2022/06/19(日) 11:33:06.55ID:YciZ0/bi boolの意味なんか一般アメリカ人も知らんだろ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★5 [BFU★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【ローソン】ロゴの「L」で誤解生んだコーヒーカップ、デザイン変更へ 在庫使い切る3か月後にリニューアル [ぐれ★]
- 「遺体、安倍、会いたい」👈逆から読んでみて [175344491]
- 【悲報】SANA、発言撤回拒否 [769931615]
- ジャーナリストがテレビで解説「台湾問題は高市総理から言ったのではなく、立憲民主が日本の対応可能能力を暴こうとしたから」 [359572271]
- 【悲報】トランプ聖帝「高市…さん…でしたっけ?」 [878970802]
- 嫌儲、復活 [377388547]
- 山上、死刑回避し減刑か 山上母の供述で一気に酌量ムードへ [804169411]
