公式
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/
※次スレは原則>>980が立てること
前スレ
Rust part16
探検
Rust part17
■ このスレッドは過去ログ倉庫に格納されています
2022/10/06(木) 22:43:13.96ID:Re0G7B20
2022/10/06(木) 22:43:37.18ID:Re0G7B20
Rust The Book (日本語版)
https://doc.rust-jp.rs/book-ja/
Rust edition guide (日本語版)
https://doc.rust-jp.rs/edition-guide/
Rust by example (日本語版)
https://doc.rust-jp.rs/rust-by-example-ja/
Rust cookbook (日本語版)
https://uma0317.github.io/rust-cookbook-ja/
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
Rust nomicon book (日本語版)
https://doc.rust-jp.rs/rust-nomicon-ja/
Rust async book (日本語版)
https://async-book-ja.netlify.app/
Rust WASM book (日本語版)
https://moshg.github.io/rustwasm-book-ja/
Rust embeded book (日本語版)
https://tomoyuki-nakabayashi.github.io/book/
Rust enbeded discovery (日本語版)
https://tomoyuki-nakabayashi.github.io/discovery/
Rust Design Patterns (日本語版)
https://qiita.com/Yappii_111/items/4ccc3a8461cdd4035651
https://qiita.com/Yappii_111/items/654717e6a6a980722189
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
https://doc.rust-jp.rs/book-ja/
Rust edition guide (日本語版)
https://doc.rust-jp.rs/edition-guide/
Rust by example (日本語版)
https://doc.rust-jp.rs/rust-by-example-ja/
Rust cookbook (日本語版)
https://uma0317.github.io/rust-cookbook-ja/
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
Rust nomicon book (日本語版)
https://doc.rust-jp.rs/rust-nomicon-ja/
Rust async book (日本語版)
https://async-book-ja.netlify.app/
Rust WASM book (日本語版)
https://moshg.github.io/rustwasm-book-ja/
Rust embeded book (日本語版)
https://tomoyuki-nakabayashi.github.io/book/
Rust enbeded discovery (日本語版)
https://tomoyuki-nakabayashi.github.io/discovery/
Rust Design Patterns (日本語版)
https://qiita.com/Yappii_111/items/4ccc3a8461cdd4035651
https://qiita.com/Yappii_111/items/654717e6a6a980722189
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
2022/10/06(木) 22:43:46.54ID:Re0G7B20
Rust CLI (Command Line Interface) apps Book
https://rust-cli.github.io/book/
Rust macro Book
https://danielkeep.github.io/tlborm/book/
Rust Future Book
https://cfsamson.github.io/books-futures-explained/
Rust async-std Book
https://book.async.rs/
Rust tokio Book
https://tokio.rs/tokio/tutorial
Rust rustc Book
https://doc.rust-lang.org/rustc/
Rust rustdoc Book
https://doc.rust-lang.org/rustdoc/
Rust rustup Book
https://rust-lang.github.io/rustup/
Rust Cargo Book
https://doc.rust-lang.org/cargo/
Rust unstable Book
https://doc.rust-lang.org/nightly/unstable-book/
Rust Reference
https://doc.rust-lang.org/reference/
Rust Standard Library
https://doc.rust-lang.org/std/
https://rust-cli.github.io/book/
Rust macro Book
https://danielkeep.github.io/tlborm/book/
Rust Future Book
https://cfsamson.github.io/books-futures-explained/
Rust async-std Book
https://book.async.rs/
Rust tokio Book
https://tokio.rs/tokio/tutorial
Rust rustc Book
https://doc.rust-lang.org/rustc/
Rust rustdoc Book
https://doc.rust-lang.org/rustdoc/
Rust rustup Book
https://rust-lang.github.io/rustup/
Rust Cargo Book
https://doc.rust-lang.org/cargo/
Rust unstable Book
https://doc.rust-lang.org/nightly/unstable-book/
Rust Reference
https://doc.rust-lang.org/reference/
Rust Standard Library
https://doc.rust-lang.org/std/
2022/10/06(木) 22:43:58.88ID:Re0G7B20
☆WebAssembly(WASM) https://webassembly.org/ https://ja.m.wikipedia.org/wiki/WebAssembly
・Wasmer - The Universal WebAssembly Runtime https://wasmer.io/
-> WASI(WebAssembly System Interface)とEmscriptenに準拠したWASMを実行できるランタイム
・WAPM - WebAssembly Package Manager https://wapm.io/
-> WebAssembly製ツール/ライブラリのパッケージマネージャー
☆Rust
・wasm-pack - your favorite rust -> wasm workflow tool!
https://github.com/rustwasm/wasm-pack
-> WebAssemblyのrustcコンパイルサポート
・Yew - Rust / Wasm framework for building client web apps https://yew.rs/ja/
-> WebAssembly によってマルチスレッドな Web アプリのフロントエンドを作ることができる、モダンな Rust のフレームワーク
☆最近のWebAssemblyのニュース
・Publickey - Enterprise IT × Cloud Computing × Web Technology / Blog より https://www.publickey1.jp/programming-lang/webassembly/
・WebAssembly活用プロジェクト https://madewithwebassembly.com/
・WebAssemblyが気になるので調べてみた - Qiita https://qiita.com/t_katsumura/items/ff379aaaba6931aad1c4
・WASMとRustはVue.js/React.jsを打倒するのか? - JSへの侵略の歴史 https://zenn.dev/koduki/articles/c07db4179bb7b86086a1
・Typescriptの次はRustかもしれない https://zenn.dev/akfm/articles/81713d4c1275ac64a75c
・WebAssemblyはJVMやeBPFのリバイバルではない WasmがWeb以外でもアツい理由 - ログミーTech https://logmi.jp/tech/articles/324956
・Rust GUI の決定版! Tauri を使ってクロスプラットフォームなデスクトップアプリを作ろう https://zenn.dev/kumassy/books/6e518fe09a86b2
類似スレ
【wasm】ブラウザでC++。Emscriptenを語ろう https://mevius.5ch.net/test/read.cgi/tech/1547549448/
・Wasmer - The Universal WebAssembly Runtime https://wasmer.io/
-> WASI(WebAssembly System Interface)とEmscriptenに準拠したWASMを実行できるランタイム
・WAPM - WebAssembly Package Manager https://wapm.io/
-> WebAssembly製ツール/ライブラリのパッケージマネージャー
☆Rust
・wasm-pack - your favorite rust -> wasm workflow tool!
https://github.com/rustwasm/wasm-pack
-> WebAssemblyのrustcコンパイルサポート
・Yew - Rust / Wasm framework for building client web apps https://yew.rs/ja/
-> WebAssembly によってマルチスレッドな Web アプリのフロントエンドを作ることができる、モダンな Rust のフレームワーク
☆最近のWebAssemblyのニュース
・Publickey - Enterprise IT × Cloud Computing × Web Technology / Blog より https://www.publickey1.jp/programming-lang/webassembly/
・WebAssembly活用プロジェクト https://madewithwebassembly.com/
・WebAssemblyが気になるので調べてみた - Qiita https://qiita.com/t_katsumura/items/ff379aaaba6931aad1c4
・WASMとRustはVue.js/React.jsを打倒するのか? - JSへの侵略の歴史 https://zenn.dev/koduki/articles/c07db4179bb7b86086a1
・Typescriptの次はRustかもしれない https://zenn.dev/akfm/articles/81713d4c1275ac64a75c
・WebAssemblyはJVMやeBPFのリバイバルではない WasmがWeb以外でもアツい理由 - ログミーTech https://logmi.jp/tech/articles/324956
・Rust GUI の決定版! Tauri を使ってクロスプラットフォームなデスクトップアプリを作ろう https://zenn.dev/kumassy/books/6e518fe09a86b2
類似スレ
【wasm】ブラウザでC++。Emscriptenを語ろう https://mevius.5ch.net/test/read.cgi/tech/1547549448/
2022/10/06(木) 22:44:37.34ID:Re0G7B20
2022/10/07(金) 01:27:41.85ID:YCt9Quz7
>>1
おつ
おつ
7デフォルトの名無しさん
2022/10/07(金) 11:28:42.39ID:d4ub3t4L2022/10/07(金) 12:26:19.13ID:+0mlf9Ez
Null安全でないGC言語のNimに浮気する人
2022/10/07(金) 12:31:49.01ID:7pvxFIpA
Null安全性が入れば雑なスクリプト用としては使えるんだけどな
2022/10/07(金) 13:04:35.78ID:KVLYaA/l
雑なスクリプト用途ならもっとシェアあって長続きしそうな競合が色々あるからなあ
2022/10/07(金) 13:36:57.50ID:yqDZzsii
Rustも意外に雑に手軽に書けるケースが多いと分かってきた
数値以外は先にスタック上に変数を用意(=メモリ確保)してしまえば
後はその参照を使ってアクセスするだけで所有権もライフタイムも気にせず気楽にコーディングできるんだな
数値以外は先にスタック上に変数を用意(=メモリ確保)してしまえば
後はその参照を使ってアクセスするだけで所有権もライフタイムも気にせず気楽にコーディングできるんだな
2022/10/07(金) 15:04:20.94ID:xg0qXK5h
lifetimeや所有権よりshared xor mutableの方が煩わしいと感じる人は多そうに思う
2022/10/07(金) 15:24:21.69ID:BlyXu4eU
僕はヌルヌルおまんこは好きですね
2022/10/07(金) 15:25:06.27ID:CNFz94QB
2022/10/07(金) 15:53:22.67ID:5wCZEj21
スレッド内ならばCellが使えるから可変性も自由自在だよ
2022/10/07(金) 15:57:51.33ID:4o6UHnyi
Cellを使ったら負け
2022/10/07(金) 16:08:39.72ID:CWgGAn1/
Cellは安全性・高速性・利便性を両立するRustの最重要パーツの一つ
2022/10/07(金) 16:27:35.67ID:tZ5nTuVj
だんだんトンデモスレになってきてるね
2022/10/07(金) 16:33:32.37ID:UzCytJZE
Rust2っていつぐらいになりますか?今のままだと使いづらいです。。。
2022/10/07(金) 16:36:51.77ID:XhwpMEr8
Cellを使わずにshared xor mutableに囚われて不自由なプログラミングしている初心者は意外と多いね
2022/10/07(金) 16:38:47.86ID:+z0uh25z
>>18
真に受けて複オジ2世が生まれないことを願ってる
真に受けて複オジ2世が生まれないことを願ってる
2022/10/07(金) 16:49:17.62ID:Znh4X5V+
Cellの利便性を知らない初心者がいるのは直感に反するからだろう
Cellは可変参照なくても非可変参照だけで書き換えられるからな
Cellは可変参照なくても非可変参照だけで書き換えられるからな
2022/10/07(金) 16:51:07.23ID:BSEaYe20
Cellを使うデメリットはないの?
ないならデフォルトがCell相当になっててもよさそう
ないならデフォルトがCell相当になっててもよさそう
2022/10/07(金) 16:56:27.41ID:Znh4X5V+
2022/10/07(金) 17:20:16.20ID:Znh4X5V+
誤解のないように言えば
スレッドを使わずにシングルスレッドの状況でももちろんCellを使える
スレッドを使わずにシングルスレッドの状況でももちろんCellを使える
2022/10/07(金) 17:44:54.27ID:0oTv+2yR
組み込みとかだとヒープの利用が難しいので自然とスタックメインになる
27はちみつ餃子 ◆8X2XSCHEME
2022/10/07(金) 17:45:11.12ID:uxbzrjvk2022/10/07(金) 17:53:21.56ID:xg0qXK5h
>>27
それはRefCellでは
それはRefCellでは
2022/10/07(金) 17:55:50.86ID:Znh4X5V+
30はちみつ餃子 ◆8X2XSCHEME
2022/10/07(金) 18:21:14.63ID:uxbzrjvk そっかー。
2022/10/07(金) 19:26:54.49ID:CNFz94QB
CellはCopy traitが必要なので場合によってはとんでなくパフォーマンスが劣化する場合がある
単なる数値なら問題はないが
単なる数値なら問題はないが
2022/10/07(金) 19:45:02.34ID:Znh4X5V+
>>31
そんなことはない
Cell<T>のTは完全に自由でありCopy要件はない
Cellで数値だけでなくVecやString等も自由に使える
例外的に一部のメソッドはCopy要件を持つがそれはOption<T>等でも同じでありそのメソッド特定のみの話
そんなことはない
Cell<T>のTは完全に自由でありCopy要件はない
Cellで数値だけでなくVecやString等も自由に使える
例外的に一部のメソッドはCopy要件を持つがそれはOption<T>等でも同じでありそのメソッド特定のみの話
2022/10/07(金) 19:48:12.01ID:xg0qXK5h
>>31
Cell::takeやCell::replaceなど追加されたのでCopyを実装してない型でも使えるよ
StringやVecなどCopyできない型を扱う場合でも
元の値をtakeして更新後replaceするなどうまく書けばそれほど非効率にもならない
Cell::takeやCell::replaceなど追加されたのでCopyを実装してない型でも使えるよ
StringやVecなどCopyできない型を扱う場合でも
元の値をtakeして更新後replaceするなどうまく書けばそれほど非効率にもならない
2022/10/07(金) 19:52:07.74ID:xg0qXK5h
CellやRefCellはshared xor mutableを知った上で適切に使った方が良いと思うので
初学者へ勧めるべきかというと微妙な気はするなあ
初学者へ勧めるべきかというと微妙な気はするなあ
2022/10/07(金) 19:58:58.94ID:Znh4X5V+
2022/10/07(金) 20:08:27.14ID:YCt9Quz7
何がしたいの?
2022/10/07(金) 20:16:39.71ID:CNFz94QB
38デフォルトの名無しさん
2022/10/07(金) 20:49:01.57ID:3/fEI9MA >>33
Cellの更新はset()で十分だね
もちろんreplace()してoldを捨てるのと同じ
>>37
take()はdefault値とのreplace()と同じ
これは気持ち悪いことでも何でもなくて
例えばmutableなOption<T>を維持しながら扱う時と同じ操作
その場合もSome(T)からTを取り出す時にdefault値と入れ替えるtake()を使うよね
何かが入っていないと未定義になるからその身代わり
もちろんすぐに更新する場合は概念上だけの扱いとみなせるし
実際の生成コードでもdefault値が入るコードは最適化で消えちゃう
未定義状態を避けるための自然な操作と捉えてよいかと
Cellの更新はset()で十分だね
もちろんreplace()してoldを捨てるのと同じ
>>37
take()はdefault値とのreplace()と同じ
これは気持ち悪いことでも何でもなくて
例えばmutableなOption<T>を維持しながら扱う時と同じ操作
その場合もSome(T)からTを取り出す時にdefault値と入れ替えるtake()を使うよね
何かが入っていないと未定義になるからその身代わり
もちろんすぐに更新する場合は概念上だけの扱いとみなせるし
実際の生成コードでもdefault値が入るコードは最適化で消えちゃう
未定義状態を避けるための自然な操作と捉えてよいかと
2022/10/07(金) 21:02:50.21ID:CNFz94QB
>>38
うーむ確かにそう言われるとむしろRust Wayな気がしてきた
うーむ確かにそう言われるとむしろRust Wayな気がしてきた
2022/10/07(金) 21:12:11.57ID:4RElSAp/
不必要にCellを使ってみたくなるのはRust厨二病によくみられる症状
悪影響は少ないから温かく見守っておけばそのうち治るよ
悪影響は少ないから温かく見守っておけばそのうち治るよ
2022/10/07(金) 21:18:22.03ID:7pvxFIpA
まとめると実行時に値を書き換えたいオブジェクトにはCellを使う
書き込む場合はset
読み込む場合はtakeを使う
RefCellはオワコン
書き込む場合はset
読み込む場合はtakeを使う
RefCellはオワコン
2022/10/07(金) 21:30:00.49ID:Znh4X5V+
>>40
内部可変性を知らないのかな?
Cellは内部可変性を与えるものであり
& mutに縛られずにコーディングの自由度を上げるだけでなく
この内部可変性を使わないと記述できない場合もあるほど重要なもの
内部可変性を知らないのかな?
Cellは内部可変性を与えるものであり
& mutに縛られずにコーディングの自由度を上げるだけでなく
この内部可変性を使わないと記述できない場合もあるほど重要なもの
2022/10/07(金) 22:49:11.13ID:xg0qXK5h
> inherited mutability is preferred, and interior mutability is something of a last resort.
内部可変性は必要な時だけつかうべき
https://doc.rust-lang.org/std/cell/
内部可変性は必要な時だけつかうべき
https://doc.rust-lang.org/std/cell/
44デフォルトの名無しさん
2022/10/07(金) 23:05:27.46ID:3/fEI9MA スレッド間での共有ができないからその場合は内部可変性を避けないとコンパイルエラーとなっちゃう
しかし共有しないものならばいつでも安全に使うことが出来ます
不自由なプログラミングをしてまで内部可変性の利用を避ける必要はありません
そのような場合にはむしろ使うべき時ですよ
しかし共有しないものならばいつでも安全に使うことが出来ます
不自由なプログラミングをしてまで内部可変性の利用を避ける必要はありません
そのような場合にはむしろ使うべき時ですよ
2022/10/07(金) 23:15:28.30ID:GE9TWYxP
The Bookの内容も理解してないようだから厨二病というより厨一病だねぇ
2022/10/07(金) 23:27:40.94ID:Znh4X5V+
2022/10/07(金) 23:41:21.31ID:xg0qXK5h
>>46
!Syncが許容される場面では常にCellを使うべきだと考えていますか?
!Syncが許容される場面では常にCellを使うべきだと考えていますか?
2022/10/07(金) 23:44:26.62ID:Znh4X5V+
2022/10/07(金) 23:59:28.46ID:v90MyUH0
Cellは安全なだけでなく
実行コストもかからないし
データ設計の幅も広がるし
メリットだらけだよね
実行コストもかからないし
データ設計の幅も広がるし
メリットだらけだよね
2022/10/08(土) 00:00:53.53ID:74M5kg9b
後で読むからブログにでもまとめといて
2022/10/08(土) 00:05:55.63ID:PJN/h6/8
Cellを嫌ってる人って何かの病気なの?
数ある型の一つに過ぎないのに
数ある型の一つに過ぎないのに
2022/10/08(土) 00:09:24.75ID:STUNJ/8C
2022/10/08(土) 00:21:36.43ID:iVJbbbtq
Cell使わずにshared xor mutableの制限で苦しんでいる人は単なるバカ
2022/10/08(土) 00:35:12.49ID:D3DCz8sQ
CellとかRefCellってRustの本にも殆ど解説がないよな
ちょろっとおまけ程度にしかない
これなしでは現実的なプログラム書けないと思うのだが本の著者らはRustを理解してないんだろうか
ちょろっとおまけ程度にしかない
これなしでは現実的なプログラム書けないと思うのだが本の著者らはRustを理解してないんだろうか
2022/10/08(土) 00:52:04.60ID:2tIWkITu
>>54
書籍は見たことないから知らなかったけどそうなのか
自分が使っている著名なcratesのソースを見てみるとCellを使っているcrateも多い
だから普通に皆がCellを使っていてそこにタブーは無いようだ
まあ当たり前か
書籍は見たことないから知らなかったけどそうなのか
自分が使っている著名なcratesのソースを見てみるとCellを使っているcrateも多い
だから普通に皆がCellを使っていてそこにタブーは無いようだ
まあ当たり前か
2022/10/08(土) 00:58:18.16ID:QzbKhEyQ
Cellなしでは現実的なプログラム書けないというのは言い過ぎ
ある種のプログラムではCellが必要になるくらいが適当では
ある種のプログラムではCellが必要になるくらいが適当では
2022/10/08(土) 01:04:15.77ID:2tIWkITu
Cellが必須となるプログラムと
Cellが必須でないプログラムがあるだけだよな
まあこれも当たり前かw
Cellが必須でないプログラムがあるだけだよな
まあこれも当たり前かw
58デフォルトの名無しさん
2022/10/08(土) 01:12:26.49ID:M3iYd9Ol Rustで日本が変わる!世界が変わる!
などとほざいてる人は自分では使っていないと思う。
使ってたら、ウーン、こりゃ使えんなあ・・・って言ってると思う。
などとほざいてる人は自分では使っていないと思う。
使ってたら、ウーン、こりゃ使えんなあ・・・って言ってると思う。
2022/10/08(土) 01:34:11.88ID:2tIWkITu
Rustは今までに登場したプログラミング言語の中では一番使いやすく効率がいい程度だな
世界や日本がどうなろうとどうでもいいが
理解できない人たちとの不利有利の二極化は起こるだろう
世界や日本がどうなろうとどうでもいいが
理解できない人たちとの不利有利の二極化は起こるだろう
2022/10/08(土) 03:41:06.69ID:D3DCz8sQ
2022/10/08(土) 05:12:58.83ID:ci/6kpez
各crateのソース調べたらtokioもasync-stdもwasm-bindgenもCell使ってるな
別方面でtauriもyewもeguiもCell使ってるな
他にもproc macro用のsynとかCLI用のclapとか様々なcrateがCell使ってるな
この状況を見るとCellは普通に使って当然っぽい
別方面でtauriもyewもeguiもCell使ってるな
他にもproc macro用のsynとかCLI用のclapとか様々なcrateがCell使ってるな
この状況を見るとCellは普通に使って当然っぽい
62デフォルトの名無しさん
2022/10/08(土) 10:23:03.05ID:2effy6oa >>38
それってCellから取り出した値がdefaultだった時の処理を書かないとならないんじゃないんですか?
それってCellから取り出した値がdefaultだった時の処理を書かないとならないんじゃないんですか?
2022/10/08(土) 10:55:13.71ID:/5aPtbi3
2022/10/08(土) 10:59:24.30ID:HCP3bqwV
Cellはスレッドローカルの共有状態を管理する時に使う
カウンタとかフラグとか
shared mutability自体多用するもんじゃないからその辺をよく考えてね
カウンタとかフラグとか
shared mutability自体多用するもんじゃないからその辺をよく考えてね
2022/10/08(土) 10:59:37.80ID:kYZ69ulT
>>54
Cの入門本の8割はmallocの使い方を説明してない
Cの入門本の8割はmallocの使い方を説明してない
2022/10/08(土) 13:18:33.57ID:HbWzH6SV
どうせなら不変な部分を取り出せるようにしてすればよかったのにな。
参照カウントみたいなどこでも付いて回るのは厄介だけど。
参照カウントみたいなどこでも付いて回るのは厄介だけど。
2022/10/08(土) 13:48:31.81ID:D3DCz8sQ
2022/10/08(土) 14:04:15.39ID:cMY3Tlwa
カジュアルにCellを使って欲しくないからだよ
よく考えて使わないとバグのもとだから
必要な人向けにはリファレンスで詳しく解説してる
よく考えて使わないとバグのもとだから
必要な人向けにはリファレンスで詳しく解説してる
2022/10/08(土) 18:26:38.20ID:r98Hfriq
>>62
マルチスレッド間共有していないから
空っぽの時に知らぬ間にアクセスされることはないよ
だから大丈夫
そしてすぐに更新することで最適化される
あとはプログラムの組み立て方の話であって言語による管轄の話ではないね
マルチスレッド間共有していないから
空っぽの時に知らぬ間にアクセスされることはないよ
だから大丈夫
そしてすぐに更新することで最適化される
あとはプログラムの組み立て方の話であって言語による管轄の話ではないね
2022/10/08(土) 19:07:57.58ID:vMI7I1P7
interior mutabilityを持ち所有権を自分が持たないケースは特殊だから説明した方がいいかもしれないが、
interior mutabilityを持ち所有権を自分が持つケースは普通の事だからわざわざ説明するまでもない。
write lockを取るからborrow checkが実行時に遅延されるのも説明しないといけないし。
interior mutabilityを持ち所有権を自分が持つケースは普通の事だからわざわざ説明するまでもない。
write lockを取るからborrow checkが実行時に遅延されるのも説明しないといけないし。
2022/10/08(土) 19:14:27.64ID:N7i/LeD2
Cellの使い方教えればRustユーザーも増えると思うな
所有権そのものより副作用を簡単には許さないところにハードルがあるから
所有権そのものより副作用を簡単には許さないところにハードルがあるから
2022/10/08(土) 19:30:29.77ID:Xn47a3bW
2022/10/08(土) 20:24:05.46ID:QzbKhEyQ
カジュアルに使うならマルチスレッドでも使えるMutex使っておけばよいのではという気もするが
2022/10/08(土) 21:19:30.79ID:BDP0djZ+
CellはCにおけるグローバル変数と同じで真に必要な時以外は極力避けるべきもの
ましてやRustの基本的考え方に慣れてないうちから使うべきものじゃない
ましてやRustの基本的考え方に慣れてないうちから使うべきものじゃない
2022/10/08(土) 22:01:30.85ID:LnEoG2Yz
2022/10/08(土) 22:04:07.45ID:QzbKhEyQ
>>75
ロックのオーバーヘッドを気にする必要があるのはカジュアルに含まれません
ロックのオーバーヘッドを気にする必要があるのはカジュアルに含まれません
2022/10/08(土) 22:06:04.90ID:aSXXl0gc
immutableなのがいいと言いつつ
mutやinterior mutabilityを結局使わせるダサさなw
mutやinterior mutabilityを結局使わせるダサさなw
2022/10/08(土) 22:39:37.88ID:K1piK/7g
>>76
Cell<T>ならスレッド内部専用の代わりにロックがなくてTと同じコストで使えるからオススメ
Cell<T>ならスレッド内部専用の代わりにロックがなくてTと同じコストで使えるからオススメ
2022/10/08(土) 22:40:45.08ID:QzbKhEyQ
immutableだけで書きたければそうすれば良いのでは
そのアプローチに窮屈さを感じる人が大半だからshared xor mutableという安全に使えるサブセットが生み出されたわけで
そのアプローチに窮屈さを感じる人が大半だからshared xor mutableという安全に使えるサブセットが生み出されたわけで
2022/10/08(土) 22:42:33.20ID:QzbKhEyQ
>>78
ただしマルチスレッド対応させようとすると書き換えが必要だし性能面に大きなこだわりがないなら最初からMutexにした方が良いのでは
Cell<T>はランタイムコスト面ではTと同じかもしれないけどコード記述は結局
ただしマルチスレッド対応させようとすると書き換えが必要だし性能面に大きなこだわりがないなら最初からMutexにした方が良いのでは
Cell<T>はランタイムコスト面ではTと同じかもしれないけどコード記述は結局
2022/10/08(土) 22:43:05.48ID:QzbKhEyQ
途中で書き込んでしまった
コードの記述の面ではTとは異なるから同じ使い心地にはならないよね
コードの記述の面ではTとは異なるから同じ使い心地にはならないよね
2022/10/08(土) 22:53:58.00ID:IDy6SwOh
>>80
それは君が勘違いをしている
Cellはマルチスレッドであってもスレッド内で使用することができる
Mutexを使うべき時はマルチスレッドのスレッド間で共有メモリとする時
排他制御のためMutexはコストが重い
したがって両者を互いに代用することは有り得ない
それは君が勘違いをしている
Cellはマルチスレッドであってもスレッド内で使用することができる
Mutexを使うべき時はマルチスレッドのスレッド間で共有メモリとする時
排他制御のためMutexはコストが重い
したがって両者を互いに代用することは有り得ない
2022/10/09(日) 00:09:47.59ID:RlW+XoWS
よくわかんないんだけどMutex<Cell<T>>は有効なの?
2022/10/09(日) 01:31:18.81ID:LqCUQ5jH
>>83
無効ではない
しかしMutex<T>はlockを取れたら& mut Tも得られて書き込みも可能なのでCellは不要
例えば
fn main() {
let m = Mutex::new(Vec::new());
sub(&m);
let v = m.lock().unwrap();
assert_eq!(*v, [123, 456]);
}
fn sub(m: &Mutex<Vec<i32>>) {
let mut v = m.lock().unwrap();
v.push(123);
v.push(456);
}
つまりMutexの可変参照をもっていなくても内部の可変性を得られる
ようするにCellで内部可変性を得られるのと同じ
だからMutex<Cell<T>>と二段に重ねる必要はない
無効ではない
しかしMutex<T>はlockを取れたら& mut Tも得られて書き込みも可能なのでCellは不要
例えば
fn main() {
let m = Mutex::new(Vec::new());
sub(&m);
let v = m.lock().unwrap();
assert_eq!(*v, [123, 456]);
}
fn sub(m: &Mutex<Vec<i32>>) {
let mut v = m.lock().unwrap();
v.push(123);
v.push(456);
}
つまりMutexの可変参照をもっていなくても内部の可変性を得られる
ようするにCellで内部可変性を得られるのと同じ
だからMutex<Cell<T>>と二段に重ねる必要はない
2022/10/09(日) 01:46:07.36ID:NMoxe/se
2022/10/09(日) 01:48:31.99ID:2Hsnp4rW
>>82
ランタイムコストが無視できる場合はMutexが使えるけどCellが使えないシチュエーションはないよね
カジュアル用途なら大は小を兼ねる的な意味でCellよりMutexの方が良いのでは?
Cellにすべき理由あるの?
ランタイムコストが無視できる場合はMutexが使えるけどCellが使えないシチュエーションはないよね
カジュアル用途なら大は小を兼ねる的な意味でCellよりMutexの方が良いのでは?
Cellにすべき理由あるの?
2022/10/09(日) 01:49:26.64ID:2Hsnp4rW
>>86
一文目逆だった。MutexがCellを置き換えられない場合はないよね、と言いたかった
一文目逆だった。MutexがCellを置き換えられない場合はないよね、と言いたかった
2022/10/09(日) 01:53:55.32ID:LqCUQ5jH
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★4 [Hitzeschleier★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- バトル漫画ってなんだかんだ言って修行編が一番面白いよな
- トランプ、G7に代わるcore 5を発表 [805596214]
- 皇室に娘を嫁がせて外戚として権勢を振るいたい。皇室の権威を傘に着て悪逆の限りを尽くすのだ。可能か?
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 【悲報】日本共産党、ツイッター速報にブチギレ法的措置WWWWWWWWWWWWWWWWWWWWWWWWWWWW [935793931]
- 木曜日のんなっしょい❗(・o・🍬)仕放題スレ🏡
