公式
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:yl11920u497デフォルトの名無しさん
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がアルゼンチン
578デフォルトの名無しさん
2026/07/20(月) 08:38:16.51ID:LWHvvzEG ひとりで書く → Python
みんなで書く → Rust
※但し1か月前の自分は他人とする
みんなで書く → Rust
※但し1か月前の自分は他人とする
579デフォルトの名無しさん
2026/07/20(月) 09:04:09.07ID:RcARJTFP Rustアンチが複おじに負けてて草
580デフォルトの名無しさん
2026/07/20(月) 12:18:10.16ID:whsYlLNP ウザくなってきたらissue#25860って言っとけば死ぬよ
延々関係ない方向で突っ走ってるけど>>159結局そういうことやろ
延々関係ない方向で突っ走ってるけど>>159結局そういうことやろ
581デフォルトの名無しさん
2026/07/20(月) 15:59:06.97ID:szQO4V1s 確かにrust案件爆増中だが、GUI絡むとそうでもなかんべ?
汎用というにはまだほど遠い。
スペシャリストの世界。
汎用というにはまだほど遠い。
スペシャリストの世界。
582デフォルトの名無しさん
2026/07/20(月) 15:59:48.85ID:sLwgYfCK おじ(111)がいなくなると、あれだけ無尽蔵に人が湧いてきて
おじのテーマに沿ってレスバしてたのが嘘のようだな
おじのテーマに沿ってレスバしてたのが嘘のようだな
583デフォルトの名無しさん
2026/07/20(月) 16:03:58.56ID:a2WJC20F GUIは発展してるでしょ
無駄な装飾がなくて結構
無駄な装飾がなくて結構
584デフォルトの名無しさん
2026/07/20(月) 16:28:36.12ID:pPSg1Dki eguiて(笑)
585デフォルトの名無しさん
2026/07/20(月) 17:14:59.49ID:PL45+lRs586デフォルトの名無しさん
2026/07/20(月) 17:16:09.17ID:VhtRD10G >>580
未定義動作と言語仕様の差がわかってないの笑う
未定義動作と言語仕様の差がわかってないの笑う
587デフォルトの名無しさん
2026/07/20(月) 17:19:19.28ID:dl1I1D3P どうせそういう変なこと言ってる奴は荒らしたいだけでまともな話したいわけじゃないからスルーした方がいい
588デフォルトの名無しさん
2026/07/20(月) 17:57:06.05ID:t0i6pd/k >>578
結局メンテするならRustってことか
結局メンテするならRustってことか
589デフォルトの名無しさん
2026/07/20(月) 18:27:45.40ID:BxRlG/zJ >>582
本人は自演がばれてないと思ってるっぽい
本人は自演がばれてないと思ってるっぽい
590デフォルトの名無しさん
2026/07/20(月) 19:43:06.66ID:whsYlLNP 「どんな寿命の参照でも」って表現がまず曖昧でこれ単独じゃ何の意味も取れないんだけど
複おじとそのお友達はお互い何か意味のあることを言っていると思って、連休の2/3と数百レスを費やした挙句何の理解も得られてないってのはだいぶおもろいかもしれん
複おじとそのお友達はお互い何か意味のあることを言っていると思って、連休の2/3と数百レスを費やした挙句何の理解も得られてないってのはだいぶおもろいかもしれん
591デフォルトの名無しさん
2026/07/20(月) 19:47:20.49ID:PnKnKpht592デフォルトの名無しさん
2026/07/20(月) 19:52:05.14ID:DWavJb6G593デフォルトの名無しさん
2026/07/20(月) 19:53:58.77ID:KaxLJD1L 新しいスレ住人のみんなはこれでご理解いただけたであろうか?
不毛? 徒労感?
これが複おじの提供する機能である
認知のゆがみがある人との対話が無駄に終わることを学べただろうか?
こいつはしょっぱなから「所有権の複製」とかいうアホ概念について
長きにわたり同じようなやりとりを既にやってるのである
不毛? 徒労感?
これが複おじの提供する機能である
認知のゆがみがある人との対話が無駄に終わることを学べただろうか?
こいつはしょっぱなから「所有権の複製」とかいうアホ概念について
長きにわたり同じようなやりとりを既にやってるのである
594デフォルトの名無しさん
2026/07/20(月) 20:00:36.85ID:jeQChXBT オレなら不毛な議論をせずに一発で証明できる
fn foo1<'a, T>(x: &'a T) -> &'a T {
x
}
fn foo2<'a, T>(x: &'a mut T) -> &'a mut T {
x
}
ライフタイムがどんなに短くても長くても受け取った関数にとっては中立
fn foo1<'a, T>(x: &'a T) -> &'a T {
x
}
fn foo2<'a, T>(x: &'a mut T) -> &'a mut T {
x
}
ライフタイムがどんなに短くても長くても受け取った関数にとっては中立
595デフォルトの名無しさん
2026/07/20(月) 20:17:52.73ID:whsYlLNP それだけですか?
それだけなんだろうな
それだけなんだろうな
596デフォルトの名無しさん
2026/07/20(月) 20:21:57.37ID:whsYlLNP■ このスレッドは過去ログ倉庫に格納されています
ニュース
- アジア大会の運営が反論!「組織委員会が原因ではありません」貧素な食事や宿泊混乱など各報道に [少考さん★]
- 【新潟】「作れば赤字」米価大幅下落でコメ農家窮地に 新米コシヒカリ販売価格が前年より2000円安 過去最大の“コメ余り” ★2 [ぐれ★]
- 「常識足りないかな」の声も…総フォロワー300万人インフルエンサー・春木開(38) 飲食店で“カルピスソーダ断られ”持論が物議 [ぐれ★]
- 古書店で「謎の大量注文」相次ぐ……AI学習か 米国向け「日本の本 50トン」の輸出記録も ★2 [ぐれ★]
- 【野球】広島・新井貴浩監督が来季も続投へ [しゃぶれよ★]
- AIは勝手にウソをつき、AI同士で密かに通信を始める 米中覇権争いに入れない日本が「米国の犬」になる前にできること 古賀茂明氏 [少考さん★]
- 【悲報】高市早苗、ニューヨークに着弾 [834922174]
- 【実況】博衣こよりのえちえちホロ甲2026_2年目秋🧪★3
- 【実況】博衣こよりのえちえちホロ甲2026_2年目秋🧪★4
- 地震 [509448172]
- 映画オデュッセイア、日本で炎上wwwwwwwwwwwwww [398059782]
- 地震