公式
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 part36
https://mevius.5ch.io/test/read.cgi/tech/1779974768/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.io/test/read.cgi/tech/1514107621/
Rust part37
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2026/07/17(金) 19:12:31.24ID:yl11920u478デフォルトの名無しさん
2026/07/19(日) 22:27:25.01ID:GVCMKu1f479デフォルトの名無しさん
2026/07/19(日) 22:27:55.87ID:F0MnotzK >>473
std::thread::Builder::spawn_unchecked() で任意の参照を受け取って返せるって言うなら、当然それを受け取って返して読めるコードができるってことだよな
これやってみようぜww
動かなかったらID:GVCMKu1fは嘘吐きな
std::thread::Builder::spawn_unchecked() で任意の参照を受け取って返せるって言うなら、当然それを受け取って返して読めるコードができるってことだよな
これやってみようぜww
動かなかったらID:GVCMKu1fは嘘吐きな
480デフォルトの名無しさん
2026/07/19(日) 22:28:23.95ID:GVCMKu1f >>477
前提条件「それを関数の引数で受け取ったら」を満たしてない
前提条件「それを関数の引数で受け取ったら」を満たしてない
481デフォルトの名無しさん
2026/07/19(日) 22:28:44.70ID:7X0+qiIb >>478
嘘吐きは何とやらと言うけど、ここまで堂々とバレてる嘘を吐けるのは逆に才能だなw
嘘吐きは何とやらと言うけど、ここまで堂々とバレてる嘘を吐けるのは逆に才能だなw
482デフォルトの名無しさん
2026/07/19(日) 22:29:32.31ID:7X0+qiIb >>480
thread::spawn() はクロージャ越しに受け取ってるから引数だけど違うって言い訳して逃げようとした時点でその解釈は成り立たないんだわ
thread::spawn() はクロージャ越しに受け取ってるから引数だけど違うって言い訳して逃げようとした時点でその解釈は成り立たないんだわ
483デフォルトの名無しさん
2026/07/19(日) 22:29:54.38ID:GVCMKu1f484デフォルトの名無しさん
2026/07/19(日) 22:30:30.82ID:GVCMKu1f >>482
そんな発言していない
そんな発言していない
485デフォルトの名無しさん
2026/07/19(日) 22:32:55.52ID:XbKlswJJ まぁ詰まるところは言い回しの問題なんだろうけどさ
486デフォルトの名無しさん
2026/07/19(日) 22:35:37.37ID:BeY+J4Fb >>484
嘘吐いてもバレるのに……
嘘吐いてもバレるのに……
487デフォルトの名無しさん
2026/07/19(日) 22:36:11.37ID:GVCMKu1f >>486
その書き込みを持ってこいよ
その書き込みを持ってこいよ
488デフォルトの名無しさん
2026/07/19(日) 22:36:50.30ID:7jkxblcL ちなみに>>184で書いた「弱参照を受け取って通常の参照にして返す関数」も普通に書けるからね
「必ず返せる」はもちろん成立しないけれど
unsafe fn get_ref<T>(weak: &Weak<T>) -> &T {
unsafe { &*weak.as_ptr() }
}
「必ず返せる」はもちろん成立しないけれど
unsafe fn get_ref<T>(weak: &Weak<T>) -> &T {
unsafe { &*weak.as_ptr() }
}
489デフォルトの名無しさん
2026/07/19(日) 22:38:12.03ID:BeY+J4Fb >>483
たまたまメモリの領域が生きてただけだろ
たまたまメモリの領域が生きてただけだろ
490デフォルトの名無しさん
2026/07/19(日) 22:39:23.63ID:GVCMKu1f491デフォルトの名無しさん
2026/07/19(日) 22:40:16.24ID:GVCMKu1f >>489
unsafe関数だからそれは許されるのがRust
unsafe関数だからそれは許されるのがRust
492デフォルトの名無しさん
2026/07/19(日) 22:43:01.84ID:+EgGKzCN >>491
おい、お前の言ってる条件満たしてるのに動かねえぞ
use std::thread;
use std::time::Duration;
fn main() {
let handle;
{
let mut local_data = 100;
let mut local_data_ref = &mut local_data;
println!("スレッド内の値: {}", local_data);
unsafe {
handle = thread::Builder::new()
.name("dangerous_thread".to_string())
.spawn_unchecked(move || {
thread::sleep(Duration::from_millis(50));
*local_data_ref = 200;
println!("スレッド内の値: {}", local_data_ref);
})
.unwrap();
}
}
handle.join().unwrap();
}
おい、お前の言ってる条件満たしてるのに動かねえぞ
use std::thread;
use std::time::Duration;
fn main() {
let handle;
{
let mut local_data = 100;
let mut local_data_ref = &mut local_data;
println!("スレッド内の値: {}", local_data);
unsafe {
handle = thread::Builder::new()
.name("dangerous_thread".to_string())
.spawn_unchecked(move || {
thread::sleep(Duration::from_millis(50));
*local_data_ref = 200;
println!("スレッド内の値: {}", local_data_ref);
})
.unwrap();
}
}
handle.join().unwrap();
}
493デフォルトの名無しさん
2026/07/19(日) 22:45:23.06ID:J5fxakd4 まだ参照返してもいないのに条件満たしてかつ動かないのおもろいな
494デフォルトの名無しさん
2026/07/19(日) 22:48:29.00ID:CA6RNpNI495デフォルトの名無しさん
2026/07/19(日) 22:52:26.39ID:Q7jr2sjS 不要なmutがあるし色々雑なコードだけど反例としては十分だな
496デフォルトの名無しさん
2026/07/19(日) 22:53:19.34ID:GVCMKu1f497デフォルトの名無しさん
2026/07/19(日) 22:57:26.40ID:Q7jr2sjS >>496 ごめんごめん、手打ちしたのが良くなかったな
use std::thread;
use std::time::Duration;
fn main() {
let handle;
{
let mut local_data = 100;
println!("スレッド内の値: {}", local_data);
let local_data_ref = &mut local_data;
unsafe {
handle = thread::Builder::new()
.name("dangerous_thread".to_string())
.spawn_unchecked(move || {
thread::sleep(Duration::from_millis(50));
*local_data_ref = 200;
println!("スレッド内の値: {}", local_data_ref);
})
.unwrap();
}
}
handle.join().unwrap();
}
これでクラッシュした理由を教えてくれや
use std::thread;
use std::time::Duration;
fn main() {
let handle;
{
let mut local_data = 100;
println!("スレッド内の値: {}", local_data);
let local_data_ref = &mut local_data;
unsafe {
handle = thread::Builder::new()
.name("dangerous_thread".to_string())
.spawn_unchecked(move || {
thread::sleep(Duration::from_millis(50));
*local_data_ref = 200;
println!("スレッド内の値: {}", local_data_ref);
})
.unwrap();
}
}
handle.join().unwrap();
}
これでクラッシュした理由を教えてくれや
498デフォルトの名無しさん
2026/07/19(日) 23:00:33.97ID:9N1Mvpqx >>497
どう見ても未定義動作です本当にありがとうございます
どう見ても未定義動作です本当にありがとうございます
499デフォルトの名無しさん
2026/07/19(日) 23:02:12.84ID:gOfZIriO500デフォルトの名無しさん
2026/07/19(日) 23:03:42.88ID:d0lr3qJ1 ちゃんとコンパイルは通るな
501デフォルトの名無しさん
2026/07/19(日) 23:05:01.54ID:eHBdU/kr Windowsでは動くな
未定義動作らしくなってきた
未定義動作らしくなってきた
502デフォルトの名無しさん
2026/07/19(日) 23:06:23.23ID:GVCMKu1f >>497
こちらでは以下が表示されて正常終了するが
スレッド内の値: 100
スレッド内の値: 200
動かないこともあるだろうね
unsafe関数を使う時はそのSafety条件を守ることがRustでは必須
こちらでは以下が表示されて正常終了するが
スレッド内の値: 100
スレッド内の値: 200
動かないこともあるだろうね
unsafe関数を使う時はそのSafety条件を守ることがRustでは必須
503デフォルトの名無しさん
2026/07/19(日) 23:08:41.34ID:EPUrWbSR504デフォルトの名無しさん
2026/07/19(日) 23:10:37.48ID:GVCMKu1f505デフォルトの名無しさん
2026/07/19(日) 23:11:11.06ID:+39tuTEu506デフォルトの名無しさん
2026/07/19(日) 23:13:19.88ID:d6fluU/x >>497
地味に無駄mut外されて洗練されてんの笑う
地味に無駄mut外されて洗練されてんの笑う
507デフォルトの名無しさん
2026/07/19(日) 23:14:11.45ID:d6fluU/x ただ、上は「スレッド外の値」やな
508デフォルトの名無しさん
2026/07/19(日) 23:25:15.72ID:R2LtKg8E use std::thread;
use std::time::Duration;
fn main() {
let handle;
let mut local_data = 100;
println!("スレッド外の値: {}", local_data);
let local_data_ref = &mut local_data;
unsafe {
handle = thread::Builder::new()
.name("dangerous_thread".to_string())
.spawn_unchecked(move || {
thread::sleep(Duration::from_millis(500));
println!("スレッド内の値: {}", local_data_ref);
*local_data_ref = 200;
println!("スレッド内の値: {}", local_data_ref);
})
.unwrap();
}
}
println!("local_data消失");
handle.join().unwrap();
}
何が起こってるかわかりやすくした
これで動いてしまった場合でも未定義動作だとわかる
use std::time::Duration;
fn main() {
let handle;
let mut local_data = 100;
println!("スレッド外の値: {}", local_data);
let local_data_ref = &mut local_data;
unsafe {
handle = thread::Builder::new()
.name("dangerous_thread".to_string())
.spawn_unchecked(move || {
thread::sleep(Duration::from_millis(500));
println!("スレッド内の値: {}", local_data_ref);
*local_data_ref = 200;
println!("スレッド内の値: {}", local_data_ref);
})
.unwrap();
}
}
println!("local_data消失");
handle.join().unwrap();
}
何が起こってるかわかりやすくした
これで動いてしまった場合でも未定義動作だとわかる
509デフォルトの名無しさん
2026/07/19(日) 23:25:32.10ID:2iSHfWbm mut汚染は鉄板だけどunsafe使うのは趣旨に反するよな
Cellとか使うと気持ち悪くできそうだけど複雑になる
fn foo<'a, T, F>(f: F, x: &'a mut T, y: &'a mut T) -> &'a mut T
where
F: FnOnce(&'a mut T, &'a mut T) -> bool
{
if f(x, y) { x } else { y }
}
Cellとか使うと気持ち悪くできそうだけど複雑になる
fn foo<'a, T, F>(f: F, x: &'a mut T, y: &'a mut T) -> &'a mut T
where
F: FnOnce(&'a mut T, &'a mut T) -> bool
{
if f(x, y) { x } else { y }
}
510デフォルトの名無しさん
2026/07/19(日) 23:26:27.45ID:GVCMKu1f >>497が反例になってない証拠は
簡略化したこのコードをみるとわかる
fn main() {
let handle;
{
let mut local_data = 100;
println!("スレッド内の値: {}", local_data);
let local_data_ref = &mut local_data;
{
handle = Some(local_data_ref);
}
}
handle.unwrap();
}
スコープルールに反しているだけにすぎない
簡略化したこのコードをみるとわかる
fn main() {
let handle;
{
let mut local_data = 100;
println!("スレッド内の値: {}", local_data);
let local_data_ref = &mut local_data;
{
handle = Some(local_data_ref);
}
}
handle.unwrap();
}
スコープルールに反しているだけにすぎない
511デフォルトの名無しさん
2026/07/19(日) 23:27:18.23ID:bxzaHrV9 条件決めた奴が spawn_unchecked() でも成り立つと明言している以上趣旨には反してない
512デフォルトの名無しさん
2026/07/19(日) 23:28:30.71ID:GsL396XN >>510
スレッド立ててない時点で簡略化できてないぞ
スレッド立ててない時点で簡略化できてないぞ
513デフォルトの名無しさん
2026/07/19(日) 23:28:33.09ID:GVCMKu1f514デフォルトの名無しさん
2026/07/19(日) 23:29:11.11ID:MI3knhkj515デフォルトの名無しさん
2026/07/19(日) 23:29:32.14ID:MI3knhkj >>513
また新しい嘘が始まったな
また新しい嘘が始まったな
516デフォルトの名無しさん
2026/07/19(日) 23:29:43.26ID:GVCMKu1f517デフォルトの名無しさん
2026/07/19(日) 23:30:23.43ID:MI3knhkj >>516
お前の書いたコードじゃなくて元のコードの話してるんだけど
お前の書いたコードじゃなくて元のコードの話してるんだけど
518デフォルトの名無しさん
2026/07/19(日) 23:30:57.41ID:GVCMKu1f519デフォルトの名無しさん
2026/07/19(日) 23:30:58.78ID:UGHA3+tz 勝手に名前だけ似せた関係ないコードにすり替えて話してるのヤバすぎるだろ
520デフォルトの名無しさん
2026/07/19(日) 23:31:39.85ID:UGHA3+tz >>518
お前の書いた妄想コードはhandle = Some(local_data_ref);がある部分のスコープが元のコードと一致してない
お前の書いた妄想コードはhandle = Some(local_data_ref);がある部分のスコープが元のコードと一致してない
521デフォルトの名無しさん
2026/07/19(日) 23:31:44.43ID:GVCMKu1f >>517
元のコードもhandleとlocal_dataのスコープが食い違っている
元のコードもhandleとlocal_dataのスコープが食い違っている
522デフォルトの名無しさん
2026/07/19(日) 23:33:29.24ID:uxNzkEWb >>510のコードはthread::scopeを使った場合にしか起きないスコープになってる
523デフォルトの名無しさん
2026/07/19(日) 23:33:59.63ID:L0YtsTIP >>521
スレッドとスコープの見わけもつかんのかたわけ
スレッドとスコープの見わけもつかんのかたわけ
524デフォルトの名無しさん
2026/07/19(日) 23:39:08.66ID:GVCMKu1f 本質部分だけ取り出すと理解できない人のために
>>497から一番外側の不要な鍵カッコ2つを取り外すして参照を返すとこうなる
use std::thread;
use std::time::Duration;
fn main() {
let handle;
let mut local_data = 100;
println!("スレッド内の値: {}", local_data);
let local_data_ref = &mut local_data;
unsafe {
handle = thread::Builder::new()
.name("dangerous_thread".to_string())
.spawn_unchecked(move || {
thread::sleep(Duration::from_millis(50));
*local_data_ref = 200;
println!("スレッド内の値: {}", local_data_ref);
local_data_ref
})
.unwrap();
}
let result = handle.join().unwrap();
println!("result: {result}");
}
こうなる
result: 200
>>497から一番外側の不要な鍵カッコ2つを取り外すして参照を返すとこうなる
use std::thread;
use std::time::Duration;
fn main() {
let handle;
let mut local_data = 100;
println!("スレッド内の値: {}", local_data);
let local_data_ref = &mut local_data;
unsafe {
handle = thread::Builder::new()
.name("dangerous_thread".to_string())
.spawn_unchecked(move || {
thread::sleep(Duration::from_millis(50));
*local_data_ref = 200;
println!("スレッド内の値: {}", local_data_ref);
local_data_ref
})
.unwrap();
}
let result = handle.join().unwrap();
println!("result: {result}");
}
こうなる
result: 200
525デフォルトの名無しさん
2026/07/19(日) 23:39:35.33ID:Je9ZT3pN どれだけ曲解したところで handle = Some(local_data_ref); がある部分のスコープが local_data より先に終わってる時点でスレッドを理解してないとしか言えない
526デフォルトの名無しさん
2026/07/19(日) 23:40:36.64ID:xeU/443Z527デフォルトの名無しさん
2026/07/19(日) 23:41:25.28ID:pTqrx0Og >>524
お前は一度くらい嘘を吐かずに話せないのか
お前は一度くらい嘘を吐かずに話せないのか
528デフォルトの名無しさん
2026/07/19(日) 23:42:07.87ID:pTqrx0Og >>524
複オジ理論「不要なスコープを取り除いたらスコープが壊れてるんだ!」
複オジ理論「不要なスコープを取り除いたらスコープが壊れてるんだ!」
529デフォルトの名無しさん
2026/07/19(日) 23:42:38.37ID:GVCMKu1f530デフォルトの名無しさん
2026/07/19(日) 23:43:28.52ID:GVCMKu1f >>526
スコープ外に参照を持ち出せないのはRustの常識
スコープ外に参照を持ち出せないのはRustの常識
531デフォルトの名無しさん
2026/07/19(日) 23:43:33.36ID:lrKY9Hhf532デフォルトの名無しさん
2026/07/19(日) 23:44:10.12ID:9U0PzD1P533デフォルトの名無しさん
2026/07/19(日) 23:44:45.44ID:VYuhTwcT >>530
じゃあRustのコンパイラは無能だからスコープが壊れててもコンパイルを通すと?w
じゃあRustのコンパイラは無能だからスコープが壊れててもコンパイルを通すと?w
534デフォルトの名無しさん
2026/07/19(日) 23:45:13.52ID:Do2V15MU 複オジなんてどうせ隠れアンチだからな
535デフォルトの名無しさん
2026/07/19(日) 23:45:58.75ID:jmKhuzp4536デフォルトの名無しさん
2026/07/19(日) 23:47:10.55ID:GVCMKu1f537デフォルトの名無しさん
2026/07/19(日) 23:47:11.26ID:2YvNcuM/ >>530
どう見てもスコープ内で渡されてますねえ
use std::thread;
use std::time::Duration;
fn main() {
let handle;
{
let mut local_data = 100;
println!("スレッド外の値: {}", local_data);
let local_data_ref = &mut local_data;
unsafe {
handle = thread::Builder::new()
.name("dangerous_thread".to_string())
.spawn_unchecked(move || {
thread::sleep(Duration::from_millis(500));
println!("スレッド内の値: {}", local_data_ref);
*local_data_ref = 200;
println!("スレッド内の値: {}", local_data_ref);
})
.unwrap();
}
}
println!("local_data消失");
handle.join().unwrap();
}
どう見てもスコープ内で渡されてますねえ
use std::thread;
use std::time::Duration;
fn main() {
let handle;
{
let mut local_data = 100;
println!("スレッド外の値: {}", local_data);
let local_data_ref = &mut local_data;
unsafe {
handle = thread::Builder::new()
.name("dangerous_thread".to_string())
.spawn_unchecked(move || {
thread::sleep(Duration::from_millis(500));
println!("スレッド内の値: {}", local_data_ref);
*local_data_ref = 200;
println!("スレッド内の値: {}", local_data_ref);
})
.unwrap();
}
}
println!("local_data消失");
handle.join().unwrap();
}
538デフォルトの名無しさん
2026/07/19(日) 23:48:41.40ID:A/rr6nbt >>536
「どんな寿命の参照でも」「どんな値でも」「他の関数から返ってきたものでも」「関数から必ず返せる」 (>>159)
「任意のライフタイムで必ず成立する」(>>183)
「Rustでは付加条件なく必ず成り立ちます」(>>214)
↓
thread::spawn() はクロージャ越しに受け取ってるから引数だけど違うよね……やっぱなし!
クロージャが返してるからセーフ……これもなし!
↓
実は関数の引数で受け取るコードがコンパイル通ったらってことでした! ほら、rustcでコンパイルが通ったら成り立ってるでしょ!
あ、あとunsafeは別だから!
↓
やっぱり標準ライブラリの関数が勝手に「使えるけど使えなくしまーす」って意地悪で言ってるんです!
コンパイル通ったらって条件も残ってます!
↓
そんなことないです! 固有の事情があるんです! そう、固有の事情です!
受け取る参照を制限しているから、受け取ったら返せるんです!
↓
やっぱり違う! 俺の書いた見た目の似たコードではスコープから外れてるから違うんだ!
早くこれに納得いく説明をしてくれよww
「どんな寿命の参照でも」「どんな値でも」「他の関数から返ってきたものでも」「関数から必ず返せる」 (>>159)
「任意のライフタイムで必ず成立する」(>>183)
「Rustでは付加条件なく必ず成り立ちます」(>>214)
↓
thread::spawn() はクロージャ越しに受け取ってるから引数だけど違うよね……やっぱなし!
クロージャが返してるからセーフ……これもなし!
↓
実は関数の引数で受け取るコードがコンパイル通ったらってことでした! ほら、rustcでコンパイルが通ったら成り立ってるでしょ!
あ、あとunsafeは別だから!
↓
やっぱり標準ライブラリの関数が勝手に「使えるけど使えなくしまーす」って意地悪で言ってるんです!
コンパイル通ったらって条件も残ってます!
↓
そんなことないです! 固有の事情があるんです! そう、固有の事情です!
受け取る参照を制限しているから、受け取ったら返せるんです!
↓
やっぱり違う! 俺の書いた見た目の似たコードではスコープから外れてるから違うんだ!
早くこれに納得いく説明をしてくれよww
539デフォルトの名無しさん
2026/07/19(日) 23:48:47.51ID:im9d/ITc >>536
「どんな寿命の参照でも」「どんな値でも」「他の関数から返ってきたものでも」「関数から必ず返せる」 (>>159)
「任意のライフタイムで必ず成立する」(>>183)
「Rustでは付加条件なく必ず成り立ちます」(>>214)
↓
thread::spawn() はクロージャ越しに受け取ってるから引数だけど違うよね……やっぱなし!
クロージャが返してるからセーフ……これもなし!
↓
実は関数の引数で受け取るコードがコンパイル通ったらってことでした! ほら、rustcでコンパイルが通ったら成り立ってるでしょ!
あ、あとunsafeは別だから!
↓
やっぱり標準ライブラリの関数が勝手に「使えるけど使えなくしまーす」って意地悪で言ってるんです!
コンパイル通ったらって条件も残ってます!
↓
そんなことないです! 固有の事情があるんです! そう、固有の事情です!
受け取る参照を制限しているから、受け取ったら返せるんです!
↓
やっぱり違う! 俺の書いた見た目の似たコードではスコープから外れてるから違うんだ!
早くこれに納得いく説明をしてくれよww
「どんな寿命の参照でも」「どんな値でも」「他の関数から返ってきたものでも」「関数から必ず返せる」 (>>159)
「任意のライフタイムで必ず成立する」(>>183)
「Rustでは付加条件なく必ず成り立ちます」(>>214)
↓
thread::spawn() はクロージャ越しに受け取ってるから引数だけど違うよね……やっぱなし!
クロージャが返してるからセーフ……これもなし!
↓
実は関数の引数で受け取るコードがコンパイル通ったらってことでした! ほら、rustcでコンパイルが通ったら成り立ってるでしょ!
あ、あとunsafeは別だから!
↓
やっぱり標準ライブラリの関数が勝手に「使えるけど使えなくしまーす」って意地悪で言ってるんです!
コンパイル通ったらって条件も残ってます!
↓
そんなことないです! 固有の事情があるんです! そう、固有の事情です!
受け取る参照を制限しているから、受け取ったら返せるんです!
↓
やっぱり違う! 俺の書いた見た目の似たコードではスコープから外れてるから違うんだ!
早くこれに納得いく説明をしてくれよww
540デフォルトの名無しさん
2026/07/19(日) 23:49:03.84ID:GVCMKu1f541デフォルトの名無しさん
2026/07/19(日) 23:49:22.03ID:RywEX15a >>536
「どんな寿命の参照でも」「どんな値でも」「他の関数から返ってきたものでも」「関数から必ず返せる」 (>>159)
「任意のライフタイムで必ず成立する」(>>183)
「Rustでは付加条件なく必ず成り立ちます」(>>214)
↓
thread::spawn() はクロージャ越しに受け取ってるから引数だけど違うよね……やっぱなし!
クロージャが返してるからセーフ……これもなし!
↓
実は関数の引数で受け取るコードがコンパイル通ったらってことでした! ほら、rustcでコンパイルが通ったら成り立ってるでしょ!
あ、あとunsafeは別だから!
↓
やっぱり標準ライブラリの関数が勝手に「使えるけど使えなくしまーす」って意地悪で言ってるんです!
コンパイル通ったらって条件も残ってます!
↓
そんなことないです! 固有の事情があるんです! そう、固有の事情です!
受け取る参照を制限しているから、受け取ったら返せるんです!
↓
やっぱり違う! 俺の書いた見た目の似たコードではスコープから外れてるから違うんだ!
早くこれに納得いく説明をしてくれよww
「どんな寿命の参照でも」「どんな値でも」「他の関数から返ってきたものでも」「関数から必ず返せる」 (>>159)
「任意のライフタイムで必ず成立する」(>>183)
「Rustでは付加条件なく必ず成り立ちます」(>>214)
↓
thread::spawn() はクロージャ越しに受け取ってるから引数だけど違うよね……やっぱなし!
クロージャが返してるからセーフ……これもなし!
↓
実は関数の引数で受け取るコードがコンパイル通ったらってことでした! ほら、rustcでコンパイルが通ったら成り立ってるでしょ!
あ、あとunsafeは別だから!
↓
やっぱり標準ライブラリの関数が勝手に「使えるけど使えなくしまーす」って意地悪で言ってるんです!
コンパイル通ったらって条件も残ってます!
↓
そんなことないです! 固有の事情があるんです! そう、固有の事情です!
受け取る参照を制限しているから、受け取ったら返せるんです!
↓
やっぱり違う! 俺の書いた見た目の似たコードではスコープから外れてるから違うんだ!
早くこれに納得いく説明をしてくれよww
542デフォルトの名無しさん
2026/07/19(日) 23:49:45.50ID:RywEX15a >>540
RAIIとスコープについて学んでおいでw
RAIIとスコープについて学んでおいでw
543デフォルトの名無しさん
2026/07/19(日) 23:50:23.19ID:RywEX15a 540 デフォルトの名無しさん 2026/07/19(日) 23:49:03.84 ID:GVCMKu1f
>>537
println!("local_data消失");の意味がわからない
消失してないから表示されるぞ
複おじの知能ではスコープはわからない
>>537
println!("local_data消失");の意味がわからない
消失してないから表示されるぞ
複おじの知能ではスコープはわからない
544デフォルトの名無しさん
2026/07/19(日) 23:51:23.22ID:9D3is3z1 煽りコピペがうざいので減らしてくれ
荒らしはID:GVCMKu1fだけで足りてる
荒らしはID:GVCMKu1fだけで足りてる
545デフォルトの名無しさん
2026/07/19(日) 23:51:50.05ID:GVCMKu1f546デフォルトの名無しさん
2026/07/19(日) 23:52:03.24ID:LIGzNvxy >>540
スコープが壊れてるってイキってたくせにスコープがわかってないのおもろい
スコープが壊れてるってイキってたくせにスコープがわかってないのおもろい
547デフォルトの名無しさん
2026/07/19(日) 23:52:16.91ID:GVCMKu1f 意義→異議
548デフォルトの名無しさん
2026/07/19(日) 23:52:56.65ID:LIGzNvxy >>545
spawn_unchecked() は一切参照を扱えないって話に勝手にすり替えてて草
> どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
このバカげた主張の話をしてるんだぞw
spawn_unchecked() は一切参照を扱えないって話に勝手にすり替えてて草
> どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
このバカげた主張の話をしてるんだぞw
549デフォルトの名無しさん
2026/07/19(日) 23:53:01.64ID:GVCMKu1f550デフォルトの名無しさん
2026/07/19(日) 23:53:27.17ID:2yWTRs2r551デフォルトの名無しさん
2026/07/19(日) 23:53:50.01ID:GVCMKu1f >>548
参照を返せないという反例コードはどれ?
参照を返せないという反例コードはどれ?
552デフォルトの名無しさん
2026/07/19(日) 23:54:04.40ID:2yWTRs2r >>549
成り立たないコードが示されてるのに勝手に成り立つコードに書き換えて「どんなケースでも成り立つ!」は嘘吐きすぎる
成り立たないコードが示されてるのに勝手に成り立つコードに書き換えて「どんなケースでも成り立つ!」は嘘吐きすぎる
553デフォルトの名無しさん
2026/07/19(日) 23:54:35.61ID:GVCMKu1f554デフォルトの名無しさん
2026/07/19(日) 23:54:56.33ID:GVCMKu1f >>552
参照を返せないコードはどれですか?
参照を返せないコードはどれですか?
555デフォルトの名無しさん
2026/07/19(日) 23:56:34.41ID:GVCMKu1f unsafeのspawn_unchecked()でも参照を返せることを>>524で示した
このケースでも反例はない
このケースでも反例はない
556デフォルトの名無しさん
2026/07/19(日) 23:57:23.89ID:gTGt9p2I557デフォルトの名無しさん
2026/07/19(日) 23:57:41.89ID:gTGt9p2I >>555
また嘘吐きか
また嘘吐きか
558デフォルトの名無しさん
2026/07/19(日) 23:58:46.18ID:HimEHeoN 「どんな寿命の参照でも」「どんな値でも」「他の関数から返ってきたものでも」「関数から必ず返せる」 (>>159)
↓
「スコープで寿命が変わってるから返せないんだ! こんなのは反例にならない!」
もう嘘しか吐いてない
↓
「スコープで寿命が変わってるから返せないんだ! こんなのは反例にならない!」
もう嘘しか吐いてない
559デフォルトの名無しさん
2026/07/19(日) 23:59:07.13ID:GVCMKu1f560デフォルトの名無しさん
2026/07/19(日) 23:59:21.63ID:GVCMKu1f Rustでは以下が常に成立する
ここまでに反例なし
【前提】どんな寿命の参照でも、それを関数の引数で受け取ったら、
【恒真】その参照や一部の参照を、関数から必ず返せる
>>159
>>どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
ここまでに反例なし
【前提】どんな寿命の参照でも、それを関数の引数で受け取ったら、
【恒真】その参照や一部の参照を、関数から必ず返せる
>>159
>>どんな寿命の参照でも、それを関数の引数で受け取ったら、その参照や一部の参照を、関数から必ず返せる
561デフォルトの名無しさん
2026/07/19(日) 23:59:24.81ID:HimEHeoN 「どんな寿命の参照でも」「どんな値でも」「他の関数から返ってきたものでも」「関数から必ず返せる」 (>>159)
「任意のライフタイムで必ず成立する」(>>183)
「Rustでは付加条件なく必ず成り立ちます」(>>214)
↓
thread::spawn() はクロージャ越しに受け取ってるから引数だけど違うよね……やっぱなし!
クロージャが返してるからセーフ……これもなし!
↓
実は関数の引数で受け取るコードがコンパイル通ったらってことでした! ほら、rustcでコンパイルが通ったら成り立ってるでしょ!
あ、あとunsafeは別だから!
↓
やっぱり標準ライブラリの関数が勝手に「使えるけど使えなくしまーす」って意地悪で言ってるんです!
コンパイル通ったらって条件も残ってます!
↓
そんなことないです! 固有の事情があるんです! そう、固有の事情です!
受け取る参照を制限しているから、受け取ったら返せるんです!
↓
スコープで寿命が変わってるから返せないんだ! こんなのは反例にならない!
早くこれに納得いく説明をしてくれよww
「任意のライフタイムで必ず成立する」(>>183)
「Rustでは付加条件なく必ず成り立ちます」(>>214)
↓
thread::spawn() はクロージャ越しに受け取ってるから引数だけど違うよね……やっぱなし!
クロージャが返してるからセーフ……これもなし!
↓
実は関数の引数で受け取るコードがコンパイル通ったらってことでした! ほら、rustcでコンパイルが通ったら成り立ってるでしょ!
あ、あとunsafeは別だから!
↓
やっぱり標準ライブラリの関数が勝手に「使えるけど使えなくしまーす」って意地悪で言ってるんです!
コンパイル通ったらって条件も残ってます!
↓
そんなことないです! 固有の事情があるんです! そう、固有の事情です!
受け取る参照を制限しているから、受け取ったら返せるんです!
↓
スコープで寿命が変わってるから返せないんだ! こんなのは反例にならない!
早くこれに納得いく説明をしてくれよww
562デフォルトの名無しさん
2026/07/20(月) 00:00:01.10ID:ePIKrZ+R563デフォルトの名無しさん
2026/07/20(月) 00:00:59.52ID:WgMKnyG7564デフォルトの名無しさん
2026/07/20(月) 00:01:22.56ID:yjKLz6QF 日付変わったからID変わるし逃げるチャンスだぞw
565デフォルトの名無しさん
2026/07/20(月) 00:04:25.07ID:uo5Y2Bx6 鳩に餌をあげないでください
566デフォルトの名無しさん
2026/07/20(月) 00:26:23.15ID:+KK2qof4 >>562-563
これだな
これだな
567デフォルトの名無しさん
2026/07/20(月) 01:03:36.24ID:whsYlLNP すっげー伸びてるじゃん
友達ができてよかったね複くん
友達ができてよかったね複くん
568デフォルトの名無しさん
2026/07/20(月) 01:29:30.72ID:FTzidL2p RustとPythonってみんなどっちが書きやすいんだろ
個人的には断然Rustなんだが
個人的には断然Rustなんだが
569デフォルトの名無しさん
2026/07/20(月) 02:28:01.91ID:SUSKKYlc コンパイルエラーとフォーマッタに依存しきった書き方してるからクレートあるものに関してはRustかなー
pythonのインデント調整を筆頭に色々とめんどくさいん、でもBlender関連は諦めてpythonで拡張してるし、obsidian関連はtypescriptで拡張してる
pythonのインデント調整を筆頭に色々とめんどくさいん、でもBlender関連は諦めてpythonで拡張してるし、obsidian関連はtypescriptで拡張してる
570デフォルトの名無しさん
2026/07/20(月) 07:13:02.37ID:xinP/7ux https://atmarkit.itmedia.co.jp/ait/spv/2605/08/news038.html
図1 プログラミング言語の案件別平均年収ランキング
1位 Rust 月額84万 年収1008万円
図1 プログラミング言語の案件別平均年収ランキング
1位 Rust 月額84万 年収1008万円
571デフォルトの名無しさん
2026/07/20(月) 07:18:33.55ID:bz7XXARi Pythonは軽く書くにはいいけど数百行でつらくなるからなあ
それ以上書くならRustだなあ
それ以上書くならRustだなあ
572デフォルトの名無しさん
2026/07/20(月) 07:42:00.48ID:guFOVLdG573デフォルトの名無しさん
2026/07/20(月) 07:42:40.75ID:guFOVLdG574デフォルトの名無しさん
2026/07/20(月) 07:46:30.86ID:NK50dKXH Rustに移ったら実行時エラー実行時デバッグが激減した
575デフォルトの名無しさん
2026/07/20(月) 08:00:48.22ID:guFOVLdG576デフォルトの名無しさん
2026/07/20(月) 08:26:00.87ID:7Rhw2qA3 糞つまんねーサッカーやっと終わった
仕事サボってサッカーの話ばっかしてる派遣プログラマーは今月で契約終了
こいつに月50万も払って割に合わねーわ
仕事サボってサッカーの話ばっかしてる派遣プログラマーは今月で契約終了
こいつに月50万も払って割に合わねーわ
577デフォルトの名無しさん
2026/07/20(月) 08:27:15.99ID:0sKavqd3 rustがスペインでclangがアルゼンチン
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 酷すぎる愛知名古屋アジア大会、貧相な食事、小さすぎるベッドに男女同室のミス、国歌も間違えグダグダな運営対応に海外から大ブーイング [征夷大将軍★]
- 【Z世代】「食事キャンセル界隈」は本当に大丈夫なのか? 若者が「食べられない」ことを正当化する“危険性”も [ぐれ★]
- 【速報】千葉・君津市の小糸川が氾濫か 警戒レベル5「緊急安全確保」 浸水想定区域299世帯668人に [ちょこ★]
- 【野球】セ・リーグ T 3x-2 DB [9/21] 阪神連勝 延長11回大山がサヨナラホームラン!M 10 DeNA連敗 [鉄チーズ烏★]
- 【滋賀】琵琶湖で男性3人が行方不明 レンタルした水上バイクだけが湖上で見つかる 警察や消防などが捜索 [ぐれ★]
- 【自動車】残クレ650万円で買った「アルファード」わずか8ヶ月で廃車に…まだ残価580万円あるのに全部借金? 相手のいる事故でも? ★2 [ぐれ★]
- 高市早苗、米中友好を阻止へ [834922174]
- シルバーウィーク暇ならアニソン聴こうぜ・・・
- 愛国保守「中国が核ミサイル使わず飽和攻撃もせずほかの国が参戦せず日本には支援がどんどん来れば勝てる!」 いやなにそれ [819729701]
- 食 欲 を 抑 え る 方 法 [841411289]
- イラン🇮🇷(GDP132位,経済困窮)にアメリカ・イスラエル(世界最強の自由の守護者)が敗北した理由、ガチで謎 [941632843]
- 【反省会】台風25号、散々騒ぐも大きな被害なく終了へ 1,000年に1度の千葉豪雨の足元にも及ばない [597533159]