[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/05 10:37 / Filesize : 296 KB / Number-of Response : 1021
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Rust part15



1 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 18:28:20.99 ID:cuIcFT6k.net]
公式
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/

601 名前:はちみつ餃子 mailto:sage [2022/06/10(金) 20:18:18.95 ID:din4Kjb/.net]
>>586
すでに >>587 が指摘しているが、定数畳み込みが起こっている。 入力が定数で、かつそれに対する演算が副作用のない基本的なものであった場合に定数畳み込みがされやすい。 定数ではない場合でもこの関数 count は
mov rax, rdi
ret
になってて、入力をそのまま返す形にまで最適化されるので末尾呼出しがどうこうというレベルのものではなくなっている。

最適化というのは、レジスタ割り当てなどは理論的な背景がはっきりしているが、多くの細々としたものは「大量の置き換えパターンを辞書のように持っている」という物量で押し切る泥臭いものだったりするので (それをやりやすいようなデータ構造とかに工夫はあると思うが) 結局のところは投入されたリソースが多いやつが強い。

ちなみに Scheme の末尾呼出し最適化は言語仕様で要求する最低限度がそれだけ (しかし常にやらなければならない) という意味であって、それ以上の最適化をやっちゃ駄目という意味ではないよ。 最適化をどのレベルまでやるかは処理系次第。

602 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 20:27:25.22 ID:VliTcE7P.net]
こいつが出てくると結論が1つも分からなくなる

603 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 21:05:43.32 ID:uz7MKgqc.net]
複オジと同じ臭い

604 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 21:45:41.77 ID:iyAWtrh4.net]
汚文章は汚コードの兄弟
同じ親から生まれてくるもの

605 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:32:01.13 ID:r0Sf5PMX.net]
最適化の話はかなりコンパイラーに詳しくないとなぜそうなるかって分からないだろうからな
コンパイラーの最適化について話せる奴はプログラミング中級者以上だろ。
(本職プログラマなら話せないと知識なさすぎと言われるだろうが)
趣味でプの俺は永遠に初心者レベルでそんな知識ないから、こいつ何を言っているんだ?だが

606 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:32:11.19 ID:+N1EN6wu.net]
まぁ要するに

×××という最適化処理が処理系の規格として定められているのなら処理系の開発者(=コンパイラとか作る人)はその最適化を実現しないといけないしそれを利用するプログラマは処理系が”上手いことやってくれる”と期待していい、しかしそれが言語規格上は必須とされてない処理については処理系が“うまいことやつてくれる”と基本は期待してはいけない
けど、規格で求められてないような高度な最適化処理を“してはいけない”わけではない、最新の理論で見つかった最適化処理など取り入れる分には好きにして構わない

という意味でしょ
Haskellのメモ化処理とかでもよく出てくるよ
GHCって言うすごい処理系があってHaskellの標準規格では全然定められてないような最適化処理をバンバンやってくれるから“なんでこんなにはやいの?とりま作っただけなのに”と思うこと時々あるからな

607 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:36:04.99 ID:3HE2W+m8.net]
最適化と言えば&mutがnoaliasになって高速化したコード出会ったことある人居る?

608 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:56:48.93 ID:/Qg1cUoJ.net]
>>596
要するに~
元の説明より長なっとるやないかーいww
脳みそ整理整頓してこんかーいww

609 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 23:03:01.48 ID:EifRM46R.net]
>>595
初心者自演乙オジ



610 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 23:39:18 ID:QxuEFd4p.net]
またいつもと同じパターン
善人 = 情報や説明やコード等を書いてくれる人
悪人 = 文句や批判だけの人

>>597
Rustでは基本的に二つの & mut がaliasになることはないからnoaliasでいいけど
LLVMのバグが見つかったりやRustコンパイラの改修などで変遷を経てきてるみたいね

> Rust 1.0 ~ 1.7 noalias enabled
> Rust 1.8 ~ 1.27 noalias disabled
> Rust 1.28 ~ 1.29 noalias enabled
> Rust 1.30 ~ 1.54 noalias disabled
> Rust 1.54 ~ noalias enabled

611 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 23:52:37.74 ID:q3uEdydr.net]
仕様ころころゴミ言語

612 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 23:57:33.08 ID:Vy8jfUtT.net]
ソースこれですか
https://stackoverflow.com/a/57259339

613 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 00:21:37.71 ID:nVHax23k.net]
>>602
「rust add assign optimize site:stackoverflow.com」でトップヒットだったわw
どおりでね

614 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 00:47:00.69 ID:41aFXNPT.net]
>>601
Rustの仕様は変わっていない
LLVMへの最適化指示のうちの一つをLLVMのバグ発見のため一時的にオフとしていただけ

615 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 00:53:30.81 ID:6T6IERuk.net]
そんなつまんねーのに反応すんなよ……

616 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 01:51:51.23 ID:coFBEVyx.net]
マッチポンピング好きだねぇ

617 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 11:14:20.05 ID:FpznSlgy.net]
そろそろRust製の有名なソフトウェア作ってからビックマウスしてくださいね、Firefox以外で

618 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 11:39:14.69 ID:fd4RDbWP.net]
>>606
マッチポンプも過疎スレのにぎわい

619 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 11:54:00.75 ID:sRR0HfwK.net]
TechEmpower Round 18で1.5倍の差を付けて堂々の1位をかっさらったactixは有名ソフトウェアではない了解



620 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 15:51:26.10 ID:Lxou0O6d.net]
DiscordとかDropboxとか

621 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 16:19:59.18 ID:C3/u0lQ5.net]
WinとかLinuxの中身ですでに使われてなかった?

622 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 18:52:01.33 ID:BGPUwt90.net]
>>593
同じ臭いも何も同一人物だろ

623 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 19:26:39.50 ID:WsHL0uxM.net]
>>611
Linuxはまだ
winは確実なソースあったっけ?
OS系だとAndroidでは使われてる(まだデフォルトで有効ではないけど)

624 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 23:25:25.63 ID:HlAQKNMT.net]
なんでRound18なんて大昔の過去を?

625 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 06:12:09.52 ID:6S+GFICB.net]
>>612
どうでもいい

>>613
同じくどうでもいい

626 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 17:11:51.09 ID:tUHADwRi.net]
Rustはver2.0にはなりませんって言ってるけど実質はとっくの昔にver2.0になってる

627 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 19:14:45.66 ID:geXDvND7.net]
>>616
どういうこと?

628 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 20:36:02.36 ID:nrxswUhC.net]
>>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を用いてジェネリックに書けば、
どちらの型の場合であっても、非ジェネリックに書いた時と同一コードとなる

629 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 20:47:24.48 ID:nrxswUhC.net]
>>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()の必要なくコンパイルが通る



630 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 20:59:35.22 ID:nrxswUhC.net]
実際に >>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」のみが残り非ジェネリックと同一コードとなる
したがって、上述のコードがどの型でも最善に動作するコードとなるだろう

631 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 21:33:27.12 ID:HOCAPH7I.net]
NAVERまとめを彷彿とさせるレス乙
3~4日もかけて頑張って調べたのは讃えるが
特質の異なるものを必要もなくジェネリック化することがアンチパターンだということに早く気づいてね

632 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 21:51:32.06 ID:rC/Ton17.net]
これは同じものだからジェネリックでいいんじゃね

633 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 22:02:56.78 ID:geXDvND7.net]
>>620
構造体メンバーであるis_overflowが常にfalseであることが分かるほどコンパイラ賢いんだっけ?
実際に生成されるコード確認した?

634 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 22:16:28.43 ID:McWr7xMA.net]
add系は#[inline]だから大丈夫

635 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 22:22:02.34 ID:geXDvND7.net]
>>624
構造体メンバの値はグローバル変数なんかと同じで関数外で値が変更される可能性があるので
メンバが特定の値しか取らないことを暫定として最適化するためには、
crateの範囲を超えてプログラム全体で値が設定されうる箇所が他にないことを確認するか
メンバが可視な範囲で確認する必要があると思うけど、
前者をやるためにはリンク時最適化が必要だし
後者ならメンバの可視性をLLVMに渡さないといけないと思う
rustcとLLVMはそこまでやってるの?

636 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 22:54:00.11 ID:E86JsxIR.net]
rust結構面白いからマイクロソフトがVisualStudioでRustでWindowsFormを作れるようにしてくれればなあ

637 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 22:59:17.60 ID:MphJhZqp.net]
>>618
それが>>566の2行目で書いてる工夫のことだよ
boolではなくchecked_add使ってOption<()>返すメソッドにしておけば?演算子でシンプルに書ける

638 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:07:42.57 ID:McWr7xMA.net]
>>627
assignでない演算は生成のため内部でcloneが発生して無駄と既に結論が出ている

639 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:11:14.31 ID:0LaPlWrL.net]
GATがstableになるの意外と近い予定なんだな
年単位で先のことかと思ってた



640 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:18:22.58 ID:H16c0lbs.net]
>>625
Rustでそれは起きない
書き換えるには所有権か&mutが必要でコンパイラは全て把握している
更に構造体のメンバーはpub指定がない限り他者はアクセス不能
つまり今回ならばnext()しかメンバー書き換えしないとコンパイラは確定できる

641 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:25:01.40 ID:geXDvND7.net]
>>630
その最適化するのはLLVMだけどLLVMが最適化できるだけの情報を渡してるの?というのが聞きたいこと

642 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 00:14:58.10 ID:RutuvYDu.net]
>>623
その通りRustコンパイラが賢いことを確認したよ
is_overflowが常にfalseとなることを察知してNoneを返すことが無くなったみたい
Noneが来ない利用側のwhile let Some(n) = iter.next()は無限ループのコードとなっちゃった
さらにwhile loopより後ろのコードは永遠未達と判断されて完全に消えた

643 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 00:32:02.84 ID:XmIGhHAx.net]
>>628
checked_add使うのはプリミティブだけだよ
BigUintはadd_assignで常にSome(())

644 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 00:46:44.89 ID:BEV+i+nu.net]
>>620
GATってIteratorとか既存TraitのAssosiate Typeに直接ライフタイム書けない仕様になったの?
LendingIteratorみたいに別のTraitを使わないといけないようならイテレータ関連の仕組みが2重なって使い勝手が悪い

645 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 00:50:16.18 ID:WmCB7dh7.net]
>>633
意味不明
Some(())/Noneにするならば>>618のbool値のコードで十分

646 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 00:56:09.87 ID:WmCB7dh7.net]
>>634
もちろん出来るようになる
今は無理だからRust公式ブログで解説された例に倣って仮にLendingIteratorとの名で定義して使うなどする

647 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 12:04:19.24 ID:GDAgVCx4.net]
>>632
おー、そんな賢いんだ。すごい
ちなみにfn mainとイテレータの定義は同じcrateに含まれている?
lib crateでイテレータを定義してbin crateから使った場合にどうなるかも気になる

648 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 14:28:57.42 ID:HonuYlRO.net]
>>626
こういうMicrosoftからのサポートは俺も期待してる
VC++よりもRust書きたい

649 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 17:16:12.55 ID:GB/2aB1F.net]
やめてくれ
汚コードまみれになる



650 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:44:34.63 ID:oVc0GyRX.net]
乱数系のモジュールの仕様変更がかなりガッツリあったみたいなんだけど
Rustってこういうことよく起るの?
なんかWeb系みたいなノリを感じたんだが合ってる?

651 名前:デフォルトの名無しさん [2022/06/13(月) 19:57:14.15 ID:86dwWfAN.net]
なんのはなしだ

652 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:58:13.01 ID:8KDu5nut.net]
>>640
人に読んでもらう文章は重要なところ省いたら読んでもらえないよ

653 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:59:25.24 ID:GDAgVCx4.net]
>>640
標準ライブラリで破壊的変更はほとんどない
外部crateなら概ねsemverに従ってるし lockfile の仕組みもあるから、
以前ビルドできていたものがビルドできなくなることもほとんどない

654 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:37:45.98 ID:XXqnAuVB.net]
>>638
サポートってどの程度のサポートを期待しているんだ?
MSがRustコンパイラー出せばWindowsのRust用フレームワーク出すんだろうがな
出さないなら、C/C++/C#のAPI/フレームワークをRustからとりあえず使えるようにしました
程度のサポートになるだろう。
期待しているのはRust用フレームワークであってRustからとりあえず使えるよじゃないだろ? []
[ここ壊れてます]

656 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:37:53.20 ID:oVc0GyRX.net]
>>643
あれ外部ライブラリか
しかし乱数系の標準ライブラリってまだRustにないのか
やぱ若い言語だなRust

657 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:43:42.90 ID:cs6TlBtz.net]
>>645
若いというか意図的に標準ライブラリから外してあるよ
理由は標準入りしてしまうと破壊的変更ができなくなって腐るから
だから将来的にも標準に入る予定はないと思う

658 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:52:20.46 ID:oVc0GyRX.net]
>>646
意図的に外してるの?
ふーん、それはそれで面白い

659 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 23:01:34.06 ID:JmWkv6oB.net]
>理由は標準入りしてしまうと破壊的変更ができなくなって腐るから

なんという本末転倒感



660 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 00:25:58.88 ID:DOq4xEj+.net]
基本的にRustはシンプルに最小限の言語構成部分しか標準ライブラリに持たない方針
つまり各プログラミング言語毎に標準ライブラリの意味合いや範囲が異なるのと同じ
だから乱数でも正規表現でも何でもRustでは外部クレートに存在する
非同期だって基本構成部分のasync/await/Futureは言語として持つけど
非同期ランタイムや非同期ライブラリは外部クレート

661 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 00:42:56.77 ID:OVbm/pyy.net]
OptionやResultの便利メソッドはどんどん追加されてるし別に標準ライブラリを最小限のものにしようとはしてないでしょ

662 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 00:49:05.73 ID:o3U2MVOf.net]
>>649
>最小限の言語構成部分しか標準ライブラリに持たない方針
俺もそんな方針だと思う
これが良いのかどうかは分んが。
標準ライブラリだとコンパイラ屋がコンパイラを出す限りサポート・メンテされるのが
他の言語では標準ライブラリなのが外部クレートだと、将来これをメンテする奴がいないになって
放置になり困ったになる可能性あるからな。

663 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 01:01:42.50 ID:DOq4xEj+.net]
>>650
それは最小限の意味合いの受け取り方が違っているだけで同じ
Option/ResultはRustにとって言語構成部分
そしてそのメソッドは強いて言えば多彩な制御構文にも相当する
だからRustの最小限の標準ライブラリに含まれているし必要性が認識されればメソッドも増える

664 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 01:15:57.14 ID:DOq4xEj+.net]
>>651
それは「サポートする人がいなくなればサポートされなくなる」という当たり前のことでRustとは別の一般的な話
どんな製品でも、どんなライブラリでも、どんな言語でも、同じ
そして基本構成部分を含むRust本体の改善&メンテと、それ以外のライブラリのそれとは明らかに別の話たから切り離されているのも自然

665 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 01:33:47.46 ID:Sv0LbY5c.net]
同じではあるがcargoの性質で余計に面倒な状態になってる。
この辺が低レイヤー向けと相性が悪い部分だな。

666 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:16:38.57 ID:DOq4xEj+.net]
>>654
低レイヤー向けのプログラミングをRustでしていて相性の悪さで困ったことはないが具体的に何だろう?

667 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:19:17.55 ID:0h5AdYzJ.net]
聞きかじりだけどクロスコンパイルとかやりたかったらxargo使うもんなんじゃないの

668 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:25:36.70 ID:RiQN/QJO.net]
同梱されるライブラリが巨大な言語で
とんでもないクソ仕様が最初に入ってしまうとか
メンテナがいなくなったけど互換性維持で簡単に削除できないとか
色々あるからなあ

669 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:36:05 ID:OVbm/pyy.net]
>>652
確かにOptionやResultそのものは言語機能にも関わってくる基本的な構成要素だけど、
OptionやResultの便利メソッドは外部crateでも定義できるよね
また、HashMapやBTreeMapなどは "言語" の構成要素ではないし、
最近ではonce_cellという外部crateで実現できていたものをstdに取り込もうとしている
"言語" を構成する最小限の要素に絞るのであれば、これらは外部crateで実現すればよくて標準ライブラリに入れなくても良いはずだよね

おそらく、標準ライブラリに取り込むものは厳選してコンパクトさを保つことを前提に、
広く使われていてAPIが安定しているものは取り込んでいくというスタンスなんだと思うよ



670 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:42:44 ID:OVbm/pyy.net]
あー、rustで書かれたプログラム全体の中でのデファクトスタンダードとかお作法とかも含めて言語って言っているのかな
そうなのであれば特に異論ないです

671 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:45:28 ID:xoZMylRu.net]
マンパワーが足りないから選択と集中で切り捨ててるだけ
利用者がそれを受け入れてるのは切り捨てた部分をコミュニティで支援するからコア機能の開発に力を注げってこと

672 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:53:05 ID:R/3cLRA4.net]
>>657
iostreamのことかああああ!!

673 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 03:08:52 ID:aUgYAX3K.net]
>>661
アレをRustに取り入れようという動きはないのかな?

674 名前:デフォルトの名無しさん [2022/06/14(火) 18:56:17.12 ID:HX1wvnNi.net]
>>648
利便性ではなく一貫性で標準を決めているってことだろ

675 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 14:46:59.83 ID:LjsAAUyE.net]
>>658
Rustの利点はOption, Resultがmatchなどの構文で評価できる事、演算子もあるが演算子オーバーロードができる言語であれば同様のことができてしまうがC++23とか26とかで提案されていたinspectはmatchそのもの

676 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 15:29:08.46 ID:13+3Y2cU.net]
Rustの活用でElectronよりも軽くて速いアプリフレームワーク「Tauri」が安定版に

まずはデスクトップから。モバイル・Webへの対応も進行中

https://forest.watch.impress.co.jp/docs/news/1417148.html

677 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 16:07:33.42 ID:Ry+36K98.net]
TauriとYewで純正Rustデスクトップアプリ開発か、
あるいはTauriとVue.jsでフロントエンドのみJavascriptでデスクトップアプリ開発か、

678 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 16:51:56.72 ID:TPrqrDPX.net]
Tauri + Vite + Vue 3 + Vuetify 3でデスクトップアプリ開発オラァ!!!

679 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 19:39:52.77 ID:3W1WJ+ID.net]
そういやAtom開発者がRustで書き直した究極のエディター「Zed」はどうなったんや。
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1374/986/amp.index.html



680 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 19:54:27.31 ID:hIo52KfN.net]
>>665
PC Watchが報じるほどのニュースか、これ?

681 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 20:36:05.07 ID:qYRKaF3V.net]
>>668
>>UIフレームワークには、GPUを活用した新設計のものを用意。このフレームワークは「GPUI」と呼ばれている。

これがどうなるかだな

682 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 20:52:57.67 ID:rVOBJfNW.net]
フレームワークおじさんきちゃったか

683 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 21:28:18 ID:5USgn4My.net]
rust製フレームワークの話なら歓迎、jsは該当スレでよろ

684 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 22:27:59.11 ID:/ddt6fDk.net]
>>670
俺的にはそれなんかバックにC/C++のVulkan系を用いたものって気がするんだよな

685 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 01:45:23.89 ID:mZKsuJMX.net]
rustでgpuなんか使い始めたらライブラリぶっ壊れまくるぞ

686 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 08:27:34.98 ID:8YmvneAf.net]


687 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 15:39:33.09 ID:NH7eG327.net]
俺も今日からラスタシアンだからよろしくな
シャドーイングいいねアンダースコアで区切った同じような名前の変数が同一スコープ内に増え続けるのが嫌でイライラしてたらからこの仕様はめちゃ好き

688 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 17:57:54.34 ID:gT1dTx1o.net]
>>676
カタカタで書くとラステイシャ

689 名前:唐ゥラステイションだからよろしくな []
[ここ壊れてます]



690 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 06:02:27.98 ID:ib599DIL.net]
全然関係無いんだけど
最近の言語って使ってる人達に名前つけるじゃん
パイソニスタとかPHPerみたいな
CとかC++にもあるのかなー?とか考えてた時に思い出したんだけど
Pythonでモヒカンとか言ってる人達いるじゃん
アレの語源は何なの?

691 名前:はちみつ餃子 mailto:sage [2022/06/18(土) 11:43:40.01 ID:vGEU23LW.net]
>>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)

692 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 11:52:07.94 ID:quioMmSC.net]
モヒカン族とか、一部の人間が使ってるだけでネットではろくに聞かない言葉だね

693 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 12:19:14.82 ID:ib599DIL.net]
>>679
どうもありがとう
ネットスラングだったのか
でもPython界隈以外で聞いたことないや

694 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 12:29:31.13 ID:XkkeHcIr.net]
俺は本場海外の用語以外は一切使わない陰キャチー牛の日本人が勝手な造語の和製英語とかクソダサいからな

695 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 12:41:40.55 ID:rUpNWN/L.net]
2005~2010頃の技術コミュニティではよく聞いたけど
最近はアンチハラスメントポリシーに抵触するから使われなくなった

696 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 13:28:43.26 ID:n5ZvcUIJ.net]
Rust サビちゃん
Python ヘビちゃん

697 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 13:35:45.47 ID:n5ZvcUIJ.net]
サビちゃんでもありヘビちゃんでもありヘジたんでもあり職場では犬たん++

698 名前:はちみつ餃子 mailto:sage [2022/06/18(土) 13:37:07.64 ID:vGEU23LW.net]
>>678
C 使いや C++ 使いのことは Cer とか C++er と書いたりすることはあるが、どう読むべきなのかわからぬ……。

699 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 13:42:03.39 ID:n5ZvcUIJ.net]
>>686
社畜



700 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 13:48:09.17 ID:n5ZvcUIJ.net]
この世の中あまたの言語があるのになぜCやC++でコード書くかと言えば仕事だから






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<296KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef