公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
公式ドキュメント
https://www.rust-lang.org/learn
Web上の実行環境
https://play.rust-lang.org
※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 part25
https://mevius.5ch.net/test/read.cgi/tech/1722354386/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
Rust part26
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2024/09/20(金) 22:18:38.38ID:c48cFuZJ965デフォルトの名無しさん
2024/11/25(月) 17:55:45.25ID:VupnR4Dz 昔、PHPでHashDos攻撃でサーバーが止まるという問題があった。特定のハッシュ値を生成するようなパターンで速度が著しく低下する。なので今はwebで外部からデーターが送られて来る時は安全なハッシュ関数を使う。
このハッシュが安全かどうかで処理速度が変わるのだけど、他の言語では昔のままのが多い。それでrustとC++を比較して遅いとか言われる事がある。安全か速度か選べるから両方揃えて比較してくれ。
このハッシュが安全かどうかで処理速度が変わるのだけど、他の言語では昔のままのが多い。それでrustとC++を比較して遅いとか言われる事がある。安全か速度か選べるから両方揃えて比較してくれ。
966デフォルトの名無しさん
2024/11/25(月) 18:58:14.92ID:1VAZLaev FxHash使うと結構速度変わるんだよな
967デフォルトの名無しさん
2024/11/26(火) 10:38:32.10ID:OrSHBPPk rustとかでi32とかVecとかHashMapとかにmethodを勝手にimplして使うことについて問題とかないですか?
968デフォルトの名無しさん
2024/11/26(火) 10:56:47.14ID:+wgmkm+f coherenceの縛りがあるから勝手にimplすることはできない
969デフォルトの名無しさん
2024/11/26(火) 11:04:59.40ID:MMcFc6BZ なんらかの trait を impl するという意味なら好きなようにやって構わないが、複数の型に impl する必要がある場合 (多相性を利用することを想定する場合) を除いては関数として定義したほうが良いことも多い。
970デフォルトの名無しさん
2024/11/26(火) 12:22:11.23ID:qH2nLRZc >>967
まず技術的にはRustは孤児ルール(orphan rule)により他へ影響を与える汚染を防げる仕組みがあるのでコンパイルが通るなら大丈夫
新たなメソッドを増やすには自分で用意したトレイトの中で行うことになるのでその自作トレイトをuseしない限り他への汚染の影響は無し
したがってあとは有用性と可読性の問題かな
例えばジェネリックに処理するためのトレイト境界とその新たなメソッドを用意するのは有用かつ必須でよく行われる
単に自作型に変換したいだけならば新たなトレイトとメソッドを用意せずとも
impl From<既存型> for 自作型 して
let x: 自作型 = 既存型値.into(); など
まず技術的にはRustは孤児ルール(orphan rule)により他へ影響を与える汚染を防げる仕組みがあるのでコンパイルが通るなら大丈夫
新たなメソッドを増やすには自分で用意したトレイトの中で行うことになるのでその自作トレイトをuseしない限り他への汚染の影響は無し
したがってあとは有用性と可読性の問題かな
例えばジェネリックに処理するためのトレイト境界とその新たなメソッドを用意するのは有用かつ必須でよく行われる
単に自作型に変換したいだけならば新たなトレイトとメソッドを用意せずとも
impl From<既存型> for 自作型 して
let x: 自作型 = 既存型値.into(); など
971デフォルトの名無しさん
2024/11/26(火) 12:32:30.35ID:OrSHBPPk972デフォルトの名無しさん
2024/11/26(火) 19:48:39.21ID:/2XIgpnc Traitのimplが出来るのは型を定義したcrateかtraitを定義したcrateだけだから、他のライブラリには影響しない
メソッドの名前が被っていてもそのtraitをuseしないと使えないし、最悪useすることになってもtraitを指定してメソッドを呼べる
メソッドの名前が被っていてもそのtraitをuseしないと使えないし、最悪useすることになってもtraitを指定してメソッドを呼べる
973デフォルトの名無しさん
2024/11/27(水) 16:06:33.32ID:ddkklZcJ 「ツールの使い方覚えるだけ」
まさにそれ
まさにそれ
974デフォルトの名無しさん
2024/11/29(金) 21:54:35.06ID:/9dKvjaK こうすれば実行時に確定する値を&'staticにできるね
static HOME: LazyLock<String> = LazyLock::new(|| std::env::var("HOME").unwrap());
let home: &'static str = &*HOME;
static HOME: LazyLock<String> = LazyLock::new(|| std::env::var("HOME").unwrap());
let home: &'static str = &*HOME;
975デフォルトの名無しさん
2024/11/30(土) 00:45:06.70ID:6Z2K+eju unsafeとは危険という意味で合ってるが、魔女のようなものを狩る行動を意味しない
信念と行動が合致しない方が得だから合致しない
信念と行動が合致しない方が得だから合致しない
976デフォルトの名無しさん
2024/11/30(土) 18:20:12.51ID:D1SGYlac 所有者をスタック上に置くからライフタイム管理が必要になる
それを避けて&'staticするには3つの方法がRustで提供されている
(1) 所有者を最初から持たない
(2) 所有者をスタックに置かない
(3) 所有者を捨てる
それを避けて&'staticするには3つの方法がRustで提供されている
(1) 所有者を最初から持たない
(2) 所有者をスタックに置かない
(3) 所有者を捨てる
977デフォルトの名無しさん
2024/11/30(土) 19:42:09.81ID:g3xetMDU データをRustの外に置けば、ライフタイム管理から逃れられる
たとえばファイルに書いてしまう
たとえばファイルに書いてしまう
978デフォルトの名無しさん
2024/11/30(土) 23:10:39.19ID:D1SGYlac (1) コンパイル時に値が確定して静的に配置されるものが該当
(2) 実行時に値が確定してstatic変数に遅延配置させるものが該当
(3) 実行時に値が確定してleak()させるものが該当
いずれも&'staticで安全に参照できる
(2) 実行時に値が確定してstatic変数に遅延配置させるものが該当
(3) 実行時に値が確定してleak()させるものが該当
いずれも&'staticで安全に参照できる
979デフォルトの名無しさん
2024/11/30(土) 23:33:27.96ID:6Z2K+eju C++もスマートポインタがあるからポインタ管理を推進する側の勢力だった
だからC++を使わなくてもCで十分という意見に説得力があった
今では、管理に反対する奴も賛成する奴もどっちもC++に不満を感じている
だからC++を使わなくてもCで十分という意見に説得力があった
今では、管理に反対する奴も賛成する奴もどっちもC++に不満を感じている
980デフォルトの名無しさん
2024/12/01(日) 21:53:13.54ID:IuCKzQHf let や let mut を見たとたん、「だーめだ、こりゃあ。数値計算に使えねえ。fortranの方が余程ましだ。」
と思った。大体、letなんてBasicで出てきそうなワードを「変数束縛」という深刻な概念に結びつけている
時点で作った奴はセンスねえと思うわ。
と思った。大体、letなんてBasicで出てきそうなワードを「変数束縛」という深刻な概念に結びつけている
時点で作った奴はセンスねえと思うわ。
981デフォルトの名無しさん
2024/12/01(日) 22:06:15.87ID:s/x9f/ll ブラックフライデーで複オジポエムが続いてたかと思えばさらに輪をかけた常識知らずが来たw
982デフォルトの名無しさん
2024/12/01(日) 22:10:53.24ID:IuCKzQHf そうか? 俺にはお前の額に馬と鹿が見えるが
983デフォルトの名無しさん
2024/12/01(日) 22:44:04.77ID:iESkoZBr >>774
アンロードが起きうるstatic変数は制御下に置くためスレッドローカルに置く
thread_local! {
static VAR: RefCell<Foo> = RefCell::new(Foo::new());
}
ちゃんとdropするためメモリリークは起きないことが確認できる
impl Drop for Foo {
fn drop(&mut self) {
println!("DEBUG: drop Foo");
}
}
アンロードが起きうるstatic変数は制御下に置くためスレッドローカルに置く
thread_local! {
static VAR: RefCell<Foo> = RefCell::new(Foo::new());
}
ちゃんとdropするためメモリリークは起きないことが確認できる
impl Drop for Foo {
fn drop(&mut self) {
println!("DEBUG: drop Foo");
}
}
984デフォルトの名無しさん
2024/12/02(月) 13:25:55.50ID:SvUnxJQd >>980
大丈夫か?比較対象がfortranやbasicでは歳が知れるぞ。今時の言語知らんのかい?
大丈夫か?比較対象がfortranやbasicでは歳が知れるぞ。今時の言語知らんのかい?
985デフォルトの名無しさん
2024/12/02(月) 13:32:19.67ID:3neKGwU7 変数束縛とかいきってるとこにセンス感じないのは同意
986デフォルトの名無しさん
2024/12/02(月) 13:38:57.47ID:5A4jg9rQ ML 系言語が基礎になってるから用語もそっちで一般的なものが使われてる。
987デフォルトの名無しさん
2024/12/02(月) 13:43:46.67ID:3neKGwU7 >>986
ML知ってるならより奇妙に感じるはずだよw
ML知ってるならより奇妙に感じるはずだよw
988デフォルトの名無しさん
2024/12/02(月) 14:01:48.04ID:SvUnxJQd lispや初期のMLからletの使い方は変わってないと思うけど何がしたくて何が出来ないと言ってるのか分からん。
989デフォルトの名無しさん
2024/12/02(月) 14:48:33.18ID:XKXSk/VC 伝統的には、引数とグローバル変数を区別せず自由変数とする
自由ではない変数は束縛されている
ただし関数がネストするなら、引数は束縛変数とするほうが需要に合致する
自由ではない変数は束縛されている
ただし関数がネストするなら、引数は束縛変数とするほうが需要に合致する
990デフォルトの名無しさん
2024/12/02(月) 18:48:24.16ID:jQxoP1Z8 free variables/bound variablesのbindingと
name bindingのbindingは無関係ではないけど使われる文脈も意味も違う
letの話は後者
それに昔々のThe Bookではvariable bindingsという用語が使われてたが
わかりにくいという理由でかなり前にvariablesという用語に変更されてる
name bindingのbindingは無関係ではないけど使われる文脈も意味も違う
letの話は後者
それに昔々のThe Bookではvariable bindingsという用語が使われてたが
わかりにくいという理由でかなり前にvariablesという用語に変更されてる
991デフォルトの名無しさん
2024/12/02(月) 18:54:23.80ID:UThkx+wo >>739
メモリリークとは実行中に使用していないメモリが解放されないことでメモリ使用量が膨らんでいくことだから
実行を終えた時にメモリ解放するか否かはどうでもいい話でそれをメモリリークとは呼ばない
Box::leak()でも実行を終えた時にメモリは解放されないがRustでは普通に使われている
例えばcargo crateでもleakさせまくっているが何ら問題ない
cargo-0.84.0/src/cargo/core/package_id.rs: let inner = Box::leak(Box::new(inner));
cargo-0.84.0/src/cargo/core/source_id.rs: let inner = Box::leak(Box::new(inner));
cargo-0.84.0/src/cargo/util/interning.rs: let s = str.to_string().leak();
メモリリークとは実行中に使用していないメモリが解放されないことでメモリ使用量が膨らんでいくことだから
実行を終えた時にメモリ解放するか否かはどうでもいい話でそれをメモリリークとは呼ばない
Box::leak()でも実行を終えた時にメモリは解放されないがRustでは普通に使われている
例えばcargo crateでもleakさせまくっているが何ら問題ない
cargo-0.84.0/src/cargo/core/package_id.rs: let inner = Box::leak(Box::new(inner));
cargo-0.84.0/src/cargo/core/source_id.rs: let inner = Box::leak(Box::new(inner));
cargo-0.84.0/src/cargo/util/interning.rs: let s = str.to_string().leak();
992デフォルトの名無しさん
2024/12/02(月) 20:05:14.90ID:4EvznkF/ 最近勉強始めたけど
::で躓いて脱落しそう
::で躓いて脱落しそう
993デフォルトの名無しさん
2024/12/02(月) 20:19:44.41ID:GZbY5KmK ダブルコロンは他の言語C++からPHPまで使われており
Rustでもそれらと同様に名前空間を示すpathの区切り文字として使用されている
https://doc.rust-lang.org/reference/paths.html
Rustでもそれらと同様に名前空間を示すpathの区切り文字として使用されている
https://doc.rust-lang.org/reference/paths.html
994デフォルトの名無しさん
2024/12/02(月) 20:22:50.81ID:SvUnxJQd >>990
えーとletという用語に文句言ってるだけで、プログラムの機能的には問題ないということでいいの?
えーとletという用語に文句言ってるだけで、プログラムの機能的には問題ないということでいいの?
995デフォルトの名無しさん
2024/12/02(月) 20:39:13.67ID:B3Y6W1wC ら、ら、ラストー🦛
996デフォルトの名無しさん
2024/12/02(月) 20:39:36.01ID:B3Y6W1wC ら、ら、ラストー🦛
997デフォルトの名無しさん
2024/12/02(月) 20:39:59.86ID:B3Y6W1wC ら、ら、ラストー🦛
ら、ら、ラストー🦛
ら、ら、ラストー🦛
998デフォルトの名無しさん
2024/12/02(月) 20:40:22.73ID:B3Y6W1wC ら、ら、ラストー🦛
ら、ら、ラストー🦛
ら、ら、ラストー🦛
999デフォルトの名無しさん
2024/12/02(月) 20:40:45.44ID:B3Y6W1wC ら、ら、ラストー🦛
ら、ら、ラストー🦛
ら、ら、ラストー🦛
ら、ら、ラストー🦛
ら、ら、ラストー🦛
1000デフォルトの名無しさん
2024/12/02(月) 20:41:08.42ID:B3Y6W1wC ら、ら、ラストー🦛
ら、ら、ラストー🦛
ら、ら、ラストー🦛
ら、ら、ラストー🦛
ら、ら、ラストー🦛
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 72日 22時間 22分 31秒
新しいスレッドを立ててください。
life time: 72日 22時間 22分 31秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- ネット殺到「高市総理の責任」「完全に高市リスク」「高市さん負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 [樽悶★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★2 [樽悶★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★10 [ぐれ★]
- 【為替】対ドルで157円台、対ユ=[ロ181円台に下落 財政悪化を警戒 [蚤の市★]
- 【自民/維新】国会議員の歳費、月5万円アップで調整 月額134万4000円に 維新配慮で次の国政選挙後に引き上げ方針 [Hitzeschleier★]
- トランプ氏「台湾侵攻すれば北京爆撃」“過激予告発言”報道がXで再燃「高市氏の1億倍やばい」 [七波羅探題★]
- バカウヨ、まだ余と対立するつもりか?高市があの発言を撤回しないなら日本を滅ぼしてやろう [805596214]
- 日本人、ついに気づいた「あれ、高市早苗ってやばくね?」 [931948549]
- 日経平均株価さん、1000円以上の暴騰ww円安が追い風、ありがとう高市 [903292576]
- 【悲報】倉田真由美「なんで高市は子供がいる家庭に2万円給付するの?子供がいる家庭ばかり優遇するのおかしくね?」 [802034645]
- 中国報道、高市首相を「毒苗」と中傷😡 [399259198]
- 【高市悲報】🇨🇳中国「日本への報復措置? 他にいくらでも方法はある。 まだまだやめないよ」 😨😱 [485983549]
