公式
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 part18
https://mevius.5ch.net/test/read.cgi/tech/1670663822/
Rust part19
レス数が950を超えています。1000を超えると書き込みができなくなります。
2023/01/17(火) 12:41:32.25ID:nikBFIMQ
894デフォルトの名無しさん
2023/02/24(金) 23:51:09.77ID:jmHr5CjO 参照はそれが具体的な値としてやりとりされるときはアドレスになるのはわかるけどさ
参照とアドレスを同一視する教え方はよくないね
あまりにも実装寄りの考え方
参照とアドレスを同一視する教え方はよくないね
あまりにも実装寄りの考え方
895デフォルトの名無しさん
2023/02/24(金) 23:52:45.39ID:igKefKVx896デフォルトの名無しさん
2023/02/24(金) 23:56:30.96ID:/RJs/kHR897デフォルトの名無しさん
2023/02/24(金) 23:59:46.63ID:kQOezMEX 最適化をかけると生成コード上では実体としてのポインタが消えたり消えなかったりするとか言ってる奴が
リファレンスの定義の話をしてる奴を「あまりにも実装寄り」とか言い出すのギャグだろ
リファレンスの定義の話をしてる奴を「あまりにも実装寄り」とか言い出すのギャグだろ
898デフォルトの名無しさん
2023/02/24(金) 23:59:55.61ID:e5dQOFE4 値の所有権は所有する変数のスコープで尽きるけど、
参照値の所有権は参照先の値より長く生存できない点でちがっていて特殊
だから入門書のそこで参照の所有権という言葉を持ち出すのは混乱の元かな
参照値の所有権は参照先の値より長く生存できない点でちがっていて特殊
だから入門書のそこで参照の所有権という言葉を持ち出すのは混乱の元かな
899デフォルトの名無しさん
2023/02/25(土) 00:18:09.53ID:KJsK2uHY900デフォルトの名無しさん
2023/02/25(土) 00:25:30.24ID:ArOrHDqj901デフォルトの名無しさん
2023/02/25(土) 00:28:38.59ID:km4YkFaP902デフォルトの名無しさん
2023/02/25(土) 00:36:36.63ID:KJsK2uHY903デフォルトの名無しさん
2023/02/25(土) 00:45:57.15ID:ArOrHDqj904デフォルトの名無しさん
2023/02/25(土) 06:13:10.73ID:nntoePxq 仮の所有権と書かれているのは借用のことを言いたいんだなーってわかる気がする
でもそこで参照の所有権はちょっと違うような違和感
でもそこで参照の所有権はちょっと違うような違和感
905デフォルトの名無しさん
2023/02/25(土) 08:48:10.93ID:NS6XQxEK 参照に所有権? それはそれで当然あるやろ
ってとこまで到達してる人と、できていない人
ってとこまで到達してる人と、できていない人
906デフォルトの名無しさん
2023/02/25(土) 10:57:14.30ID:alhcSVqs 参照することと所有することを区別するのをやめやがったのがJava
これを思い出せる人と記憶がない人の認識がずれてるんじゃないの
これを思い出せる人と記憶がない人の認識がずれてるんじゃないの
907デフォルトの名無しさん
2023/02/25(土) 11:14:12.99ID:wWCIK7/X >>905
それ以前にオブジェクト(値)が破棄される話で参照の所有権は一切無関係やん
それ以前にオブジェクト(値)が破棄される話で参照の所有権は一切無関係やん
908デフォルトの名無しさん
2023/02/25(土) 11:35:22.59ID:ArOrHDqj 参照型の変数がスコープから外れたらただ単に「参照の値」がドロップされて参照先の値には影響を与えない
という話と
>原本および仮の所有権がすべて放棄された時にオブジェクトは破棄されます.
の記述は普通に関係ある話だけどね
という話と
>原本および仮の所有権がすべて放棄された時にオブジェクトは破棄されます.
の記述は普通に関係ある話だけどね
909デフォルトの名無しさん
2023/02/25(土) 11:42:10.17ID:SzGKc5ny 所有権の複製オジに加えて
仮の所有権オジが出てきて
ある可能性が出てきたな
人類にはRustはまだ早かった説
Rustを正確に使うどころか正確に理解することすら困難だった説
仮の所有権オジが出てきて
ある可能性が出てきたな
人類にはRustはまだ早かった説
Rustを正確に使うどころか正確に理解することすら困難だった説
910デフォルトの名無しさん
2023/02/25(土) 11:48:08.84ID:iCEruD3M GC言語では参照が生きてる限り参照先が消えないので意味があるけど
Rustで参照の所有権は意味がないよ
Rustで参照の所有権は意味がないよ
911デフォルトの名無しさん
2023/02/25(土) 11:50:57.14ID:ArOrHDqj 参照型の変数がスコープを外れたら何が起こるかって話だからRustでも意味あるよ
912デフォルトの名無しさん
2023/02/25(土) 11:51:32.02ID:KWSFcpUq なんで明らかに理解できてないのにこんな自信満々なんだろうな
正直そのメンタルはほんの少しだけ羨ましいわ
正直そのメンタルはほんの少しだけ羨ましいわ
913デフォルトの名無しさん
2023/02/25(土) 11:59:08.08ID:SzGKc5ny914デフォルトの名無しさん
2023/02/25(土) 12:28:20.35ID:sdtPy+yt Rust初心者が参照にも所有権があるんだ!普通の値と同じようにスコープを外れるまで所有権があるんだ!と騒いじゃう気持ちは分かるがもちろん無意味
普通の値ならばブロックスコープを外れるまで移動しない限り所有権があるのはもちろんだが
参照の場合は全く違っていてNLL (Non-Lexical Lifetime)により参照が入っている変数が普通の値なら所有権を持ちつづけている状況でも参照の場合はは無効に成り得る
つまり参照の所有権というものを考えたとしてもその格納されている変数のブロックスコープの間に所有権が保たれる保証はなく参照の所有権を考える意味がないのだ
これが普通の値の所有権との決定的な大きな違い
さらに加えて参照は参照先の生存期間を超えられないルールもあるためこの観点からも参照の所有権を考えても単独存在は出来ず意味がない
したがって参照の所有権なんてことを自慢気に言い出す人はまだRustの基本を理解できていない
普通の値ならばブロックスコープを外れるまで移動しない限り所有権があるのはもちろんだが
参照の場合は全く違っていてNLL (Non-Lexical Lifetime)により参照が入っている変数が普通の値なら所有権を持ちつづけている状況でも参照の場合はは無効に成り得る
つまり参照の所有権というものを考えたとしてもその格納されている変数のブロックスコープの間に所有権が保たれる保証はなく参照の所有権を考える意味がないのだ
これが普通の値の所有権との決定的な大きな違い
さらに加えて参照は参照先の生存期間を超えられないルールもあるためこの観点からも参照の所有権を考えても単独存在は出来ず意味がない
したがって参照の所有権なんてことを自慢気に言い出す人はまだRustの基本を理解できていない
915デフォルトの名無しさん
2023/02/25(土) 12:36:03.27ID:ArOrHDqj 参照についてだけわざわざ所有権に意味があるとかないとか考える意味がない
参照の値は参照先の値よりも先に破棄されなければならない
という追加のルールはあっても、所有権や値にまつわるルールの例外であるわけではない
参照は値のサブセット
すべてのvalueにはownerがいて、ownerがスコープを外れたらdropされる
referenceも例外ではない
参照の値は参照先の値よりも先に破棄されなければならない
という追加のルールはあっても、所有権や値にまつわるルールの例外であるわけではない
参照は値のサブセット
すべてのvalueにはownerがいて、ownerがスコープを外れたらdropされる
referenceも例外ではない
916デフォルトの名無しさん
2023/02/25(土) 12:45:19.47ID:xzT8w7BX >>914
お前が所有権とライフタイムの区別がついてない初心者なだけやん……
お前が所有権とライフタイムの区別がついてない初心者なだけやん……
917デフォルトの名無しさん
2023/02/25(土) 13:06:19.39ID:sdtPy+yt918デフォルトの名無しさん
2023/02/25(土) 13:07:26.55ID:ArOrHDqj >その格納されている変数のブロックスコープの間に所有権が保たれる保証はなく
コイツ所有権を「アクセスする権利」とかそういう感じで捉えてるのか
仮の所有権おじさんと同類じゃん
ownership って
値に対して ownership を負ってる奴はスコープから外れるときに値をdropしなきゃいけない
って責務の話であってアクセスする権利とかじゃないから保たれる保証がどうとか的外れだよ
コイツ所有権を「アクセスする権利」とかそういう感じで捉えてるのか
仮の所有権おじさんと同類じゃん
ownership って
値に対して ownership を負ってる奴はスコープから外れるときに値をdropしなきゃいけない
って責務の話であってアクセスする権利とかじゃないから保たれる保証がどうとか的外れだよ
919デフォルトの名無しさん
2023/02/25(土) 13:08:08.81ID:a4UZTu4a PhantomData<&'a T>は参照を所有しているに含まれますか?
920デフォルトの名無しさん
2023/02/25(土) 13:15:22.31ID:SzGKc5ny あと二ヶ月くらいであの本が世に出るのか
胸が熱くなるな(野次馬根性)
胸が熱くなるな(野次馬根性)
921デフォルトの名無しさん
2023/02/25(土) 13:24:50.91ID:sdtPy+yt922デフォルトの名無しさん
2023/02/25(土) 13:34:39.07ID:ArOrHDqj >>921
アクセスする権利とかそういう類のものじゃないから「所有権が保たれる保証」とか的外れだし
特別なdrop処理があろうがなかろうが値はdropされるし
考える必要がなかろうが参照もownerがスコープをはずれたときにdropされるよ
dropされるのはただの事実だよ、ただの事実なので考える必要があるかないかはどうでもいいよ
アクセスする権利とかそういう類のものじゃないから「所有権が保たれる保証」とか的外れだし
特別なdrop処理があろうがなかろうが値はdropされるし
考える必要がなかろうが参照もownerがスコープをはずれたときにdropされるよ
dropされるのはただの事実だよ、ただの事実なので考える必要があるかないかはどうでもいいよ
923デフォルトの名無しさん
2023/02/25(土) 13:54:21.62ID:sdtPy+yt >>922
普通の値の入った変数は他へ移動しない限りブロックの最後まで所有権があることが保証され最後まで自由に使うことができる
参照の入った変数はその参照が使われなくなったら無効となる使い捨てなのでブロックの最後まで所有権がある保証はない
例えばlet a = &T; f(a); let b = &mut T; g(b); let c = &T; の時点でもうaとbは使い捨てされており無効となり使えない
このように参照の場合は普通の値の場合と全く異なる
そして参照は使い捨てされてもdropで何か特別な処理があるわけではないため参照の所有権を考える意味がない
普通の値の入った変数は他へ移動しない限りブロックの最後まで所有権があることが保証され最後まで自由に使うことができる
参照の入った変数はその参照が使われなくなったら無効となる使い捨てなのでブロックの最後まで所有権がある保証はない
例えばlet a = &T; f(a); let b = &mut T; g(b); let c = &T; の時点でもうaとbは使い捨てされており無効となり使えない
このように参照の場合は普通の値の場合と全く異なる
そして参照は使い捨てされてもdropで何か特別な処理があるわけではないため参照の所有権を考える意味がない
924デフォルトの名無しさん
2023/02/25(土) 14:11:50.12ID:ArOrHDqj >>923
>所有権があることが保証され最後まで自由に使うことができる
>無効となる使い捨てなのでブロックの最後まで所有権がある保証はない
>無効となり使えない
・ブロックの最後まで使えるかどうか
・drop時に特別な処理があるかどうか
どちらも所有権の話じゃないね
ownership とは「値の owner がスコープから外れたら値はdropされる」というルールです
そのdrop処理に特別な処理が追加されているかとか、ブロックが終わる前に無効になるとか関係ないです
>所有権があることが保証され最後まで自由に使うことができる
>無効となる使い捨てなのでブロックの最後まで所有権がある保証はない
>無効となり使えない
・ブロックの最後まで使えるかどうか
・drop時に特別な処理があるかどうか
どちらも所有権の話じゃないね
ownership とは「値の owner がスコープから外れたら値はdropされる」というルールです
そのdrop処理に特別な処理が追加されているかとか、ブロックが終わる前に無効になるとか関係ないです
925デフォルトの名無しさん
2023/02/25(土) 14:45:07.44ID:bPVO/nT3 参照に限らずCopy型はownership意識する機会が少ないからな
関数に参照の参照(&&T)を渡すみたいな例を考えないと参照値がborrowされた状態を作れない
>>923
「ブロックの最後まで所有権がある保証はない」ってあるけど
仮にブロックの最後で所有権がなくなってるような状況でブロックの最後にその参照を使う処理を追加したときに怒られるのは
ブロックの最後で参照を使った追加箇所じゃなく途中で参照先の値を横取りしようとした部分でしょ
これは「ブロックの最後まで所有権があって最後まで自由に使うことができる」ことにならないかな
関数に参照の参照(&&T)を渡すみたいな例を考えないと参照値がborrowされた状態を作れない
>>923
「ブロックの最後まで所有権がある保証はない」ってあるけど
仮にブロックの最後で所有権がなくなってるような状況でブロックの最後にその参照を使う処理を追加したときに怒られるのは
ブロックの最後で参照を使った追加箇所じゃなく途中で参照先の値を横取りしようとした部分でしょ
これは「ブロックの最後まで所有権があって最後まで自由に使うことができる」ことにならないかな
926デフォルトの名無しさん
2023/02/25(土) 14:48:33.46ID:ArOrHDqj 参照をフィールドに含む構造体が入った変数はブロックの最後まで自由に使えることは保証されてないけど所有権あるよね^^;
927デフォルトの名無しさん
2023/02/25(土) 14:58:04.64ID:sdtPy+yt928デフォルトの名無しさん
2023/02/25(土) 15:05:29.21ID:a4UZTu4a https://doc.rust-lang.org/reference/destructors.html
スコープの定義を探してこのページに来たが、ブロックの途中でmoveされた変数のスコープの終わりはどこなのか
ふつうに解釈するとブロックの終わりのようだが
"When an initialized variable or temporary goes out of scope, its destructor is run, or it is dropped."
これは「スコープを抜けたらdropする」じゃなくて「スコープを抜けたらdropされていなくてはならない」という制約の表現という解釈が正しいのかな
じゃないと二重解放にすることになっちゃう
スコープの定義を探してこのページに来たが、ブロックの途中でmoveされた変数のスコープの終わりはどこなのか
ふつうに解釈するとブロックの終わりのようだが
"When an initialized variable or temporary goes out of scope, its destructor is run, or it is dropped."
これは「スコープを抜けたらdropする」じゃなくて「スコープを抜けたらdropされていなくてはならない」という制約の表現という解釈が正しいのかな
じゃないと二重解放にすることになっちゃう
929デフォルトの名無しさん
2023/02/25(土) 15:06:07.82ID:ArOrHDqj >>927
お前が言ってる
・drop時に特別な処理がない
・ライフタイムの制約があり、ブロックの最後まで使える保証がない
は参照だけじゃなくて「参照をフィールドに含むCopy構造体」についても同じ挙動なんだけどね
お前が言ってる
・drop時に特別な処理がない
・ライフタイムの制約があり、ブロックの最後まで使える保証がない
は参照だけじゃなくて「参照をフィールドに含むCopy構造体」についても同じ挙動なんだけどね
930デフォルトの名無しさん
2023/02/25(土) 15:09:11.46ID:sdtPy+yt >>926
なんだちゃんと基本を理解できていないのか
構造体のフィールドに参照を持たせる場合は構造体にライフタイムパラメータが必要となる
したがって参照をその構造体に入れた後にその参照が使い捨てされた場合(例えば後から可変参照を使う場合)はその使い捨て参照と構造体は運命を共にする
ブロックの最後まで所有権がないことはその構造体にimpl Dropした時だけコンパイルエラーなることから分かる
なんだちゃんと基本を理解できていないのか
構造体のフィールドに参照を持たせる場合は構造体にライフタイムパラメータが必要となる
したがって参照をその構造体に入れた後にその参照が使い捨てされた場合(例えば後から可変参照を使う場合)はその使い捨て参照と構造体は運命を共にする
ブロックの最後まで所有権がないことはその構造体にimpl Dropした時だけコンパイルエラーなることから分かる
931デフォルトの名無しさん
2023/02/25(土) 15:10:49.55ID:ArOrHDqj932デフォルトの名無しさん
2023/02/25(土) 15:25:48.48ID:a4UZTu4a933デフォルトの名無しさん
2023/02/25(土) 15:27:46.31ID:sdtPy+yt934デフォルトの名無しさん
2023/02/25(土) 15:34:30.90ID:ArOrHDqj >>933
スコープを抜けた時に束縛されたdropする責務があることを「所有権を持つ」って言うから
所有権の話にその値が使い捨てかどうかとかライフタイムの制約があるかとか考える意味があるかとか関係ないよ
参照を束縛した変数も、参照を保持する構造体を束縛した変数も、プリミティブ値を束縛した変数も、
drop時に特別な処理があってもなくても、ライフタイムの制約があってもなくても
いずれについても「スコープを抜けた時に束縛されたdropする責務がある」ので所有権はあるよ
意味があるとかないとかどうでもいいよ
参照を束縛した変数も、参照を保持する構造体を束縛した変数も、プリミティブ値を束縛した変数も、
いずれについても「スコープを抜けた時に束縛されたdropする責務がある」ので所有権はあるよ
スコープを抜けた時に束縛されたdropする責務があることを「所有権を持つ」って言うから
所有権の話にその値が使い捨てかどうかとかライフタイムの制約があるかとか考える意味があるかとか関係ないよ
参照を束縛した変数も、参照を保持する構造体を束縛した変数も、プリミティブ値を束縛した変数も、
drop時に特別な処理があってもなくても、ライフタイムの制約があってもなくても
いずれについても「スコープを抜けた時に束縛されたdropする責務がある」ので所有権はあるよ
意味があるとかないとかどうでもいいよ
参照を束縛した変数も、参照を保持する構造体を束縛した変数も、プリミティブ値を束縛した変数も、
いずれについても「スコープを抜けた時に束縛されたdropする責務がある」ので所有権はあるよ
935デフォルトの名無しさん
2023/02/25(土) 15:34:46.31ID:ArOrHDqj 束縛された値、ね
936デフォルトの名無しさん
2023/02/25(土) 16:01:35.52ID:a4UZTu4a >>928
https://doc.rust-lang.org/reference/glossary.html#initialized
> Initialized
> A variable is initialized if it has been assigned a value and hasn't since been moved from.
一番最初に重要なことが書いてあったやつだすまぬ
つまりmoveされたらその時点でdrop scopeがなくなる=drop責務から解放される=所有権を失うと言えるわけね
https://doc.rust-lang.org/reference/glossary.html#initialized
> Initialized
> A variable is initialized if it has been assigned a value and hasn't since been moved from.
一番最初に重要なことが書いてあったやつだすまぬ
つまりmoveされたらその時点でdrop scopeがなくなる=drop責務から解放される=所有権を失うと言えるわけね
937デフォルトの名無しさん
2023/02/25(土) 16:26:42.35ID:SzGKc5ny 意味ないニキ(ID:sdtPy+yt)はもう
自分で何言ってんのか分かってなさそう
自分で何言ってんのか分かってなさそう
938デフォルトの名無しさん
2023/02/25(土) 21:23:46.93ID:qdHk+tio >>930
ホントにそんなこと起きるのか疑問なので試してみたらマジにそうなった
誰かこうなる仕組みを教えて~
参照をメンバーに持つ構造体で実験
struct Foo<'a> {
x: &'a String,
}
fn main() {
let mut s = String::from("abc");
let mut foo = Foo { x: &String::new() };
foo.x = &s;
println!("{}", foo.x.len());
s.push('0');
println!("{s}");
}
ここまではコンパイルも通り動いた
参照を構造体メンバーに格納した後に
可変参照を利用となるpushをして普通に動いた
そこで書かれてる通りに構造体にDropを実装
impl<'a> Drop for Foo<'a> {
fn drop(&mut self) {}
}
するとコンパイルエラーとなった
つまり参照の所有権は使い捨て(?)とやらで意味がなく(??)
それを持つ構造体はブロックスコープの最後まで生きていないため(???)ということ??
Dropの有無でエラーとなる仕組みがさっぱり分からない
ホントにそんなこと起きるのか疑問なので試してみたらマジにそうなった
誰かこうなる仕組みを教えて~
参照をメンバーに持つ構造体で実験
struct Foo<'a> {
x: &'a String,
}
fn main() {
let mut s = String::from("abc");
let mut foo = Foo { x: &String::new() };
foo.x = &s;
println!("{}", foo.x.len());
s.push('0');
println!("{s}");
}
ここまではコンパイルも通り動いた
参照を構造体メンバーに格納した後に
可変参照を利用となるpushをして普通に動いた
そこで書かれてる通りに構造体にDropを実装
impl<'a> Drop for Foo<'a> {
fn drop(&mut self) {}
}
するとコンパイルエラーとなった
つまり参照の所有権は使い捨て(?)とやらで意味がなく(??)
それを持つ構造体はブロックスコープの最後まで生きていないため(???)ということ??
Dropの有無でエラーとなる仕組みがさっぱり分からない
939デフォルトの名無しさん
2023/02/25(土) 21:45:59.77ID:CalPMh2Z >>938
dropが実行されるときにxが利用される可能性があるから
s.pushの時点ではfoo.x = &sのimmutable borrowがまだ有効なのでmutable borrowはできませんよ
ということ
Dropがなければs.pushの時点でfoo.x = &sが使われる可能性はもうないから
immutable borrowの期間は終わってるものとして扱える
dropが実行されるときにxが利用される可能性があるから
s.pushの時点ではfoo.x = &sのimmutable borrowがまだ有効なのでmutable borrowはできませんよ
ということ
Dropがなければs.pushの時点でfoo.x = &sが使われる可能性はもうないから
immutable borrowの期間は終わってるものとして扱える
940デフォルトの名無しさん
2023/02/25(土) 21:56:28.48ID:CalPMh2Z >>934
>参照を束縛した変数も、参照を保持する構造体を束縛した変数も、プリミティブ値を束縛した変数も、
>いずれについても「スコープを抜けた時に束縛されたdropする責務がある」ので所有権はあるよ
現実にはスタックポインタをインクリメント/デクリメントするだけなので
挙げられてるような種類の変数にdropする責務や所有権があるかどうかは
初めての人への説明としてわかりやすいかどうかという主観の問題だよね
>参照を束縛した変数も、参照を保持する構造体を束縛した変数も、プリミティブ値を束縛した変数も、
>いずれについても「スコープを抜けた時に束縛されたdropする責務がある」ので所有権はあるよ
現実にはスタックポインタをインクリメント/デクリメントするだけなので
挙げられてるような種類の変数にdropする責務や所有権があるかどうかは
初めての人への説明としてわかりやすいかどうかという主観の問題だよね
941デフォルトの名無しさん
2023/02/25(土) 22:03:39.90ID:qdHk+tio942デフォルトの名無しさん
2023/02/25(土) 23:40:57.64ID:sdtPy+yt そうだろ
もちろん>>924の言う通り所有権は「値のownerがスコープから外れたら値はdropされる」というルールは常に適用できる
しかし参照については使い捨てができるためブロックスコープではなくルールを成り立たせるために見えない仮想的なスコープを用意してそこを外れたと考える本末転倒
そしてdropについても何もなされない
だからわざわざ参照の所有権を持ち出して来て考える意味がない
参照で重要なのは所有権ではなくmultiple readers xor single writerルール
もちろん>>924の言う通り所有権は「値のownerがスコープから外れたら値はdropされる」というルールは常に適用できる
しかし参照については使い捨てができるためブロックスコープではなくルールを成り立たせるために見えない仮想的なスコープを用意してそこを外れたと考える本末転倒
そしてdropについても何もなされない
だからわざわざ参照の所有権を持ち出して来て考える意味がない
参照で重要なのは所有権ではなくmultiple readers xor single writerルール
943デフォルトの名無しさん
2023/02/25(土) 23:53:35.45ID:alhcSVqs しかし、役に立たないことを知りたがる人間の方が
ある知識が役に立つ証拠が不十分と思ったら勉強やめる人間よりも安定しているかもしれない
ある知識が役に立つ証拠が不十分と思ったら勉強やめる人間よりも安定しているかもしれない
944デフォルトの名無しさん
2023/02/26(日) 00:21:28.76ID:RymrPGNU それはないな
945デフォルトの名無しさん
2023/02/26(日) 03:13:20.95ID:7bMwo3Dx 所有権とライフタイムとDropトレイトを全部ごちゃ混ぜにして覚えちゃってる困ったちゃん
946デフォルトの名無しさん
2023/02/26(日) 10:19:55.47ID:PXNtu1ca 初心者になるのも大変だからなw
大体はそれ以前に転がされて終わるw
大体はそれ以前に転がされて終わるw
947デフォルトの名無しさん
2023/02/26(日) 10:47:51.71ID:PXNtu1ca 実用レベルの達する前に学習者の9割が脱落してしまう言語
言語がRustだけになるとIT業界は終わる模様
言語がRustだけになるとIT業界は終わる模様
948デフォルトの名無しさん
2023/02/26(日) 11:06:18.81ID:GuAg4x+U 複オジも仮オジも無意味オジもみんなRustの被害者だった?
949デフォルトの名無しさん
2023/02/26(日) 11:13:58.37ID:PXNtu1ca 誤解して入門を終えて実用的なプログラムを書けないで四苦八苦するのは個人の問題だからいい
でも間違った知識のままそれを主張するのは非常に迷惑
ポインターのミスでヒープをぶち壊してるような感覚
でも間違った知識のままそれを主張するのは非常に迷惑
ポインターのミスでヒープをぶち壊してるような感覚
950デフォルトの名無しさん
2023/02/26(日) 11:27:18.64ID:fGMmkE/4 >>947
その時はIT業界とRust業界に分かれるから大丈夫
その時はIT業界とRust業界に分かれるから大丈夫
951デフォルトの名無しさん
2023/02/26(日) 11:53:47.03ID:/LcclasN 「所有権はdropする責務」の出典だけ分かればすべて腑に落ちる
952デフォルトの名無しさん
2023/02/26(日) 12:46:50.46ID:bBmvUj++ それでようやく理解できた
参照はdropで何もしないから責務がなくて使い捨てしても構わなくて所有権を考える必要ないと
参照はdropで何もしないから責務がなくて使い捨てしても構わなくて所有権を考える必要ないと
953デフォルトの名無しさん
2023/02/26(日) 13:12:35.62ID:GuAg4x+U こいつもう地縛霊やろ…
954デフォルトの名無しさん
2023/02/26(日) 13:29:31.28ID:sdcrACTy 次スレってワッチョイつけたりしないの?
意図せずともID変わりがちな人もいるし追い辛いからつけてほしい
意図せずともID変わりがちな人もいるし追い辛いからつけてほしい
955デフォルトの名無しさん
2023/02/26(日) 14:25:35.83ID:dBtzQT39 参照についてだけ""わざわざ""、""特段に""、所有権について ""敢えて意識して""、""所有権について考えないようにする""必要性がない
956デフォルトの名無しさん
2023/02/26(日) 14:40:14.97ID:/LcclasN 付けてもいいけどたぶんそれだと困る人はワッチョイなしでスレを立てる
そしてそっちが伸びれば誰もワッチョイありスレを使わない
そうしてできた残骸がすでに3スレある
立てたければ勝手にすればいいけど、ワッチョイありスレだけを使い荒らしに反応しない強い意志が求められている
そしてそっちが伸びれば誰もワッチョイありスレを使わない
そうしてできた残骸がすでに3スレある
立てたければ勝手にすればいいけど、ワッチョイありスレだけを使い荒らしに反応しない強い意志が求められている
957デフォルトの名無しさん
2023/02/26(日) 17:46:02.01ID:RD2OSQ4A >>954
>>956
次スレはワッチョイありを再利用すればいいよ。
ゴミスレ残したままなのは迷惑だし。
次スレ
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
>>956
次スレはワッチョイありを再利用すればいいよ。
ゴミスレ残したままなのは迷惑だし。
次スレ
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
958デフォルトの名無しさん
2023/02/26(日) 18:37:40.46ID:32xuZUXu ワッチョイ有無どちらのスレに書き込むかは各自の自由
ワッチョイ無しスレは立てたい人がいればこのスレの後に自由にすればよいが
ワッチョイ有りスレは既に3つもあるため4つ目を立てることは控えた方がよい
ワッチョイ無しスレは立てたい人がいればこのスレの後に自由にすればよいが
ワッチョイ有りスレは既に3つもあるため4つ目を立てることは控えた方がよい
959デフォルトの名無しさん
2023/02/26(日) 19:27:42.62ID:qHcJFulr IDコロコロ野郎に荒らされるよりはワッチョイでいいやろ
960デフォルトの名無しさん
2023/02/26(日) 20:16:02.76ID:b1C1t60u ワッチョイあるスレは十中八九ネガティブ禁止の盲目信者専用になる
961デフォルトの名無しさん
2023/02/26(日) 20:39:47.94ID:IWkF2kZ0 ワッチョイありが盛り上がってたらそっちに行くって言ってるのに誰も向こうに書かないじゃん
962デフォルトの名無しさん
2023/02/26(日) 21:10:15.97ID:5AwzMq5X マイナンバーにたとえるとお金バラまかないと無理なのでは
963デフォルトの名無しさん
2023/02/26(日) 21:13:21.05ID:5bxi2XZj 自演対立や架空キャラ自演がやりにくくなるからこのままがいい
964デフォルトの名無しさん
2023/02/27(月) 08:54:14.39ID:a5aJsnij 次スレをワッチョイにして統合すればいいんじゃないの?
965デフォルトの名無しさん
2023/02/27(月) 19:38:38.14ID:knW1Dm2b すまんが、The Bookと比較してオライリー本ってどんな内容になってるの?
966デフォルトの名無しさん
2023/02/27(月) 21:25:36.59ID:4hfcaKna The Bookと比較すると
- 図や説明がわかりやすい
- カバーしてる範囲がやや広く説明も詳しめ
- C++との比較がやや多い
- IteratorやStringのメソッドの多くを一つ一つ説明しておりややくどい
- Rust特有のコードの読み方も書いてあって助かった (‘aはティックエーと読む等)
個人的には1点目がすごく大きかった
特にOwnershipとReferenceの章
- 図や説明がわかりやすい
- カバーしてる範囲がやや広く説明も詳しめ
- C++との比較がやや多い
- IteratorやStringのメソッドの多くを一つ一つ説明しておりややくどい
- Rust特有のコードの読み方も書いてあって助かった (‘aはティックエーと読む等)
個人的には1点目がすごく大きかった
特にOwnershipとReferenceの章
967デフォルトの名無しさん
2023/02/27(月) 21:31:00.76ID:qRKv85Qa オライリー本はRust始めた時に買ったけど一生積んでる
968デフォルトの名無しさん
2023/02/27(月) 21:36:07.85ID:4hfcaKna ここで少し中身を見てみれば? amazonのlook insideより多く見れる
https://books.google.com/books/about/Programming_Rust.html?id=qlkzEAAAQBAJ
https://books.google.com/books/about/Programming_Rust.html?id=qlkzEAAAQBAJ
969デフォルトの名無しさん
2023/02/27(月) 22:07:50.00ID:mGWqDr1m >>966
最後わかる〜
最後わかる〜
970デフォルトの名無しさん
2023/03/01(水) 09:54:37.52ID:Nh0mXjrz Rcって値を所有してるの?
参照だから複数存在できる感じ?
規則と矛盾してて全く分からない
参照だから複数存在できる感じ?
規則と矛盾してて全く分からない
971デフォルトの名無しさん
2023/03/01(水) 12:37:59.53ID:Avl8k8mO972デフォルトの名無しさん
2023/03/01(水) 13:03:01.05ID:450i2TJh >>970
共同所有
Rc::cloneで新しい共同所有者を追加する
共同所有者がスコープアウトすると共同所有者リスト的なものから削除される
最後の所有者がスコープアウトする際に所有してるポイント先もdropされる
共同所有
Rc::cloneで新しい共同所有者を追加する
共同所有者がスコープアウトすると共同所有者リスト的なものから削除される
最後の所有者がスコープアウトする際に所有してるポイント先もdropされる
973デフォルトの名無しさん
2023/03/01(水) 23:42:12.75ID:+2HtVlqv これを?オペレータ使った書き方するにはどうすればいいですか?
if let [first, second, third] = vec {
...
}
これでは上手く行きませんでした
let [first, second, third] = vec?;
if let [first, second, third] = vec {
...
}
これでは上手く行きませんでした
let [first, second, third] = vec?;
974デフォルトの名無しさん
2023/03/02(木) 06:24:51.44ID:lQMCQ2j6975デフォルトの名無しさん
2023/03/02(木) 08:11:39.46ID:iXGuMNZc Rustに限った話じゃないけど低レイヤーに関する情報ってなかなか入手できない
Rustなら一応Embedded Rustがあるけど実践的にはいろいろ足りてない
Rustなら一応Embedded Rustがあるけど実践的にはいろいろ足りてない
976デフォルトの名無しさん
2023/03/02(木) 12:26:14.43ID:OJtdP8PO ↓この人、美しいクレイピングを書ける!
977デフォルトの名無しさん
2023/03/02(木) 19:10:50.25ID:OHJUJNoL978デフォルトの名無しさん
2023/03/02(木) 22:00:06.30ID:C1WbSTgL 相変わらず複オジの会話の噛み合わなさとオレオレ用語の使い方は異常だな
979デフォルトの名無しさん
2023/03/02(木) 22:03:06.97ID:Op0Ow0AD どこにオレオレ用語があるのか教えて
980デフォルトの名無しさん
2023/03/03(金) 00:39:13.95ID:2c4ti5P+ >let [first, second, third] = vec else {
> return Err(...); // or None
>};
vecを直接マッチさせることはできないからsliceにする必要がある
それはいいとしてもvecを固定長のarrayにマッチさせて各要素を異なる名前の変数に入れるかエラーにするやり方はcode smellに感じる
vecが外部入力で変更しようがないのかもしれないがそれでも素直に長さチェックしたほうが良い
> return Err(...); // or None
>};
vecを直接マッチさせることはできないからsliceにする必要がある
それはいいとしてもvecを固定長のarrayにマッチさせて各要素を異なる名前の変数に入れるかエラーにするやり方はcode smellに感じる
vecが外部入力で変更しようがないのかもしれないがそれでも素直に長さチェックしたほうが良い
981デフォルトの名無しさん
2023/03/03(金) 00:48:28.99ID:a3+dFKh3 一応次スレ立てた
Rust part20
https://mevius.5ch.net/test/read.cgi/tech/1677771928/
ワッチョイスレならこっち
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
Rust part20
https://mevius.5ch.net/test/read.cgi/tech/1677771928/
ワッチョイスレならこっち
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
982デフォルトの名無しさん
2023/03/03(金) 01:01:26.40ID:5jfhiVlm >>980
スライスパターンとそのマッチングはRust公式リファレンスにも載っている普通の便利な用法
わざわざ長さチェックしていたらスライスパターンマッチングを知らない初心者かなと思ってしまう
さらに..パターンも併せて例えば
if let [.., ラス前, _] = s
これも公式に例として出ていて同様に長さチェックは不要
スライスパターンとそのマッチングはRust公式リファレンスにも載っている普通の便利な用法
わざわざ長さチェックしていたらスライスパターンマッチングを知らない初心者かなと思ってしまう
さらに..パターンも併せて例えば
if let [.., ラス前, _] = s
これも公式に例として出ていて同様に長さチェックは不要
983デフォルトの名無しさん
2023/03/03(金) 17:46:26.59ID:s0En6Xz7 >>973
moveしたいんなら
let [first, second, third]: [_; 3] = vec.try_into().map_err(|_| MyError::InvalidNumberOfHoge)?;
Vecを[T; N]にtry_intoした場合
Errの型がVecなのでmap_errしないと?が使えない
moveしたいんなら
let [first, second, third]: [_; 3] = vec.try_into().map_err(|_| MyError::InvalidNumberOfHoge)?;
Vecを[T; N]にtry_intoした場合
Errの型がVecなのでmap_errしないと?が使えない
984デフォルトの名無しさん
2023/03/03(金) 18:25:09.48ID:hYRwId4B referenceでも同じ
let [first, second, third]: &[_; 3] = vec[..].try_into().map_err(|_| MyError::InvalidNumberOfHoge)?;
let [first, second, third]: &[_; 3] = vec[..].try_into().map_err(|_| MyError::InvalidNumberOfHoge)?;
985デフォルトの名無しさん
2023/03/04(土) 00:46:15.62ID:ksgM7HUQ 結局?を無理に使うよりこの方が短く可読性もいいな
let [first, second, third] = vec[..] else {
return Err(MyError::InvalidNumberOfHoge);
};
let [first, second, third] = vec[..] else {
return Err(MyError::InvalidNumberOfHoge);
};
986デフォルトの名無しさん
2023/03/04(土) 20:27:33.18ID:ym5vMWPk そんな使い方が許されるのは個人プロジェクトか使い捨てのコードだけだね
987デフォルトの名無しさん
2023/03/04(土) 21:28:46.68ID:VYEasP1j ログファイルの各行をsplitして特定の項目(例:日時とIPとURL)だけを拾う処理とかで使えそう
Rustでは書いたことないけど
Rustでは書いたことないけど
988デフォルトの名無しさん
2023/03/04(土) 21:42:49.00ID:aBxEUUGf989デフォルトの名無しさん
2023/03/04(土) 23:13:10.54ID:Oy3wPidb >>986はいつもの荒らしだから無視しろ
荒らしは文句をつけるだけで修正案を出さない(出せない)から見分けられる
荒らしは文句をつけるだけで修正案を出さない(出せない)から見分けられる
990デフォルトの名無しさん
2023/03/06(月) 11:51:11.89ID:tj78G6sJ >>987
使い捨てのコードじゃなければそういうのはcsv parserやargument parserを使って構造体に変換するからパターンマッチでは書かないよ
使い捨てのコードじゃなければそういうのはcsv parserやargument parserを使って構造体に変換するからパターンマッチでは書かないよ
991デフォルトの名無しさん
2023/03/06(月) 12:45:03.92ID:I6GlZboG それは用途によりけり
構造体にDeserializeする場合もあれば構造体を用意しない場合もある
パース用途以外でマッチングならパーサーが出て来る余地すらない
構造体にDeserializeする場合もあれば構造体を用意しない場合もある
パース用途以外でマッチングならパーサーが出て来る余地すらない
992デフォルトの名無しさん
2023/03/11(土) 12:38:09.48ID:1tP1A91g 誰も埋めてくれない...
993デフォルトの名無しさん
2023/03/11(土) 12:38:57.76ID:1tP1A91g うーめ
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 【外交】元台湾総統・馬英九氏、高市首相発言に「台湾を危険にさらす」台湾海峡の問題は「両岸の中国人が自ら話し合うべき」★2 [1ゲットロボ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★8 [ぐれ★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 [おっさん友の会★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★5 [BFU★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- 1,000万円のBMWに擦ってしまった札幌のガキ、捕らえられてガチで詰む [329329848]
- 死にたい死にたい死にたい死にたい死にたい死にたい死にたい死にたい死にたい
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- 高市が首相になってから進次郎の評価が爆上がりしてる件について
- このチンポコ!
