公式
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のasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※C++との比較は専用スレへ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
前スレ
Rust part11
https://mevius.5ch.net/test/read.cgi/tech/1623857052/
探検
Rust part12
■ このスレッドは過去ログ倉庫に格納されています
2021/08/24(火) 22:55:27.78ID:972JwtmU
456デフォルトの名無しさん
2021/09/18(土) 09:35:47.96ID:z3n3Kv/4457デフォルトの名無しさん
2021/09/18(土) 11:21:13.85ID:I+biH5jK winitのmasterでstdwebのサポートが切られてweb_sysに一本化されていた
stdwebってオワコンになりつつあるのかな?
stdwebってオワコンになりつつあるのかな?
458デフォルトの名無しさん
2021/09/18(土) 17:05:43.72ID:NeCiGTRe >>455
NonZeroはOptionとかのサイズ最適化やポインタの値がnullでないことを示すのが主目的なので
汎用的な範囲を組み込み型で示すのはちょっと違うかと
必要ならnewtypeパターンで自分で作ればよい
NonZeroはOptionとかのサイズ最適化やポインタの値がnullでないことを示すのが主目的なので
汎用的な範囲を組み込み型で示すのはちょっと違うかと
必要ならnewtypeパターンで自分で作ればよい
459デフォルトの名無しさん
2021/09/18(土) 17:29:18.29ID:1LwUu6qJ 配列がusizeなのはpythonなんかのa[-1]の最後尾アクセスを見てると、なぜそんな言語仕様にしたのかと
off_tなんかを見ると不思議に思う。いずれも Index bounds checkが掛るのに。符号無し64bitの巨大な
配列が欲しかったから?でもi128とかあるし
off_tなんかを見ると不思議に思う。いずれも Index bounds checkが掛るのに。符号無し64bitの巨大な
配列が欲しかったから?でもi128とかあるし
460デフォルトの名無しさん
2021/09/18(土) 17:47:44.01ID:2OOJm5Lf インデックスiが実行時に決まるとき
配列のアクセスを内部的には *(p + i) にしたかったからじゃないかな
マイナスのとき〜っていう分岐をそこに入れずに最速でアクセスしたかったと
配列のアクセスを内部的には *(p + i) にしたかったからじゃないかな
マイナスのとき〜っていう分岐をそこに入れずに最速でアクセスしたかったと
461デフォルトの名無しさん
2021/09/18(土) 18:02:33.71ID:z3n3Kv/4 >>459
>符号無し64bitの巨大な配列が欲しかったから?
配列にマイナスの値は使わないんだから、そのぶんMAXの数を増やしたほうが
オーバーフローしにくいから安全だろってことらしい
でもどうせi32 as usizeとかi64 as usizeするから意味ないんですけどね!
>符号無し64bitの巨大な配列が欲しかったから?
配列にマイナスの値は使わないんだから、そのぶんMAXの数を増やしたほうが
オーバーフローしにくいから安全だろってことらしい
でもどうせi32 as usizeとかi64 as usizeするから意味ないんですけどね!
462デフォルトの名無しさん
2021/09/19(日) 12:46:43.77ID:/yxUr6Cy463デフォルトの名無しさん
2021/09/19(日) 12:55:45.99ID:HwX1dH8g464デフォルトの名無しさん
2021/09/19(日) 15:08:42.28ID:i7fTqS33 競プロの書き方を仕事でするわけないだろ
何言ってるんだ
何言ってるんだ
465デフォルトの名無しさん
2021/09/19(日) 22:06:10.71ID:0p9m0gya してるバカがいるから言ってんだよバカ。
466デフォルトの名無しさん
2021/09/19(日) 22:13:07.84ID:xwERW7V5 矯正してやれ
467デフォルトの名無しさん
2021/09/19(日) 22:58:17.41ID:i7fTqS33 アホか
競プロと仕事、書いてる時間がどっちが長いと思ってる
競プロは趣味 仕事で書いてるほうが圧倒的に長い
競プロでの書き方が仕事に引きずられることがあっても逆はない
そういうヤツがいるとか嘘をついてまで、
競プロに難癖つける理由がまったく理解できんわ
競プロと仕事、書いてる時間がどっちが長いと思ってる
競プロは趣味 仕事で書いてるほうが圧倒的に長い
競プロでの書き方が仕事に引きずられることがあっても逆はない
そういうヤツがいるとか嘘をついてまで、
競プロに難癖つける理由がまったく理解できんわ
468デフォルトの名無しさん
2021/09/19(日) 23:07:40.22ID:k8GedCcQ お前が競プロスタイルで仕事するかどうかの話じゃないし、競プロに難癖つけてもいない
469デフォルトの名無しさん
2021/09/19(日) 23:52:05.14ID:2t5v/hEZ 競プロRustスレを専用に立てて分離するのがベストな解決かな。
大多数を占める普通のRustプログラミングをする人たちにとっては役に立たない、特殊な競プロのコーティング方法が書かれても、批判議論に陥りがちでお互いにメリットないと思うのです。
大多数を占める普通のRustプログラミングをする人たちにとっては役に立たない、特殊な競プロのコーティング方法が書かれても、批判議論に陥りがちでお互いにメリットないと思うのです。
470デフォルトの名無しさん
2021/09/19(日) 23:53:50.32ID:i7fTqS33 難癖つけてるだろ
> 競技プログラミングは
> 正しいプログラミングスタイルから離れていく悪です
からの流れだからな
> 競技プログラミングは
> 正しいプログラミングスタイルから離れていく悪です
からの流れだからな
471デフォルトの名無しさん
2021/09/19(日) 23:59:33.71ID:2t5v/hEZ >>470
それ自体は合ってますよ。
もちろん各々を使い分けられる人もいるでしょう。
でもそれはその人個人の内部の話。
競プロなプログラミングスタイル自体は、正しいプログラミングスタイルから乖離しています。
それ自体は合ってますよ。
もちろん各々を使い分けられる人もいるでしょう。
でもそれはその人個人の内部の話。
競プロなプログラミングスタイル自体は、正しいプログラミングスタイルから乖離しています。
472デフォルトの名無しさん
2021/09/20(月) 00:04:36.59ID:9haXUQHR なんで競プロの話になってるんですか?
usizeをasしまくるのが競プロってこと?
usizeをasしまくるのが競プロってこと?
473デフォルトの名無しさん
2021/09/20(月) 00:14:27.54ID:LELesARs >>472
グローバル変数を用いたりunsafeを闇雲に利用している点
グローバル変数を用いたりunsafeを闇雲に利用している点
474デフォルトの名無しさん
2021/09/20(月) 00:28:27.43ID:sE5U575H475デフォルトの名無しさん
2021/09/20(月) 00:32:13.16ID:zcJdfkjB 仕事でRust書けるなんていい職場だな
476デフォルトの名無しさん
2021/09/20(月) 01:04:41.94ID:eNefvRk4 闇雲にunsafeを使うどころか脳死で全部の関数unsafeにする勢いだからな
477デフォルトの名無しさん
2021/09/20(月) 01:34:24.92ID:9haXUQHR asはみるけどunsafeは競プロじゃめったにお目にかかれないような
478デフォルトの名無しさん
2021/09/20(月) 11:13:37.01ID:rFqIM+Ck これ初めて知ったんだけど
Webブラウザサイド(フロントエンド)もRustで書けるのね
html!マクロでRustソースの中にHTMLもそのまま書けて更にその中にRustコードが書けてReact.jsのJSXみたいな感じね
https://yew.rs/ja/
Yew は WebAssembly によってマルチスレッドなWebアプリのフロントエンドを作ることができる、モダンな Rust のフレームワークです。
Webブラウザサイド(フロントエンド)もRustで書けるのね
html!マクロでRustソースの中にHTMLもそのまま書けて更にその中にRustコードが書けてReact.jsのJSXみたいな感じね
https://yew.rs/ja/
Yew は WebAssembly によってマルチスレッドなWebアプリのフロントエンドを作ることができる、モダンな Rust のフレームワークです。
479デフォルトの名無しさん
2021/09/20(月) 13:47:36.24ID:DPax/7qN そこまでする?
480デフォルトの名無しさん
2021/09/20(月) 15:13:17.24ID:xK2QDi8C alert使うだけでunwrap使うwebsysは使いたくない
481デフォルトの名無しさん
2021/09/20(月) 21:41:35.24ID:EyFwfCvn unwrapはそこらじゅうのサンプルで見かけるが、Rustクックブックでは、unwrapを許可していません。
こういう事も敷居が高い理由です
こういう事も敷居が高い理由です
482デフォルトの名無しさん
2021/09/20(月) 22:06:55.37ID:LO5PkHvF crates.ioのライブラリを読んでて見つけたんですが、
traitを実装するのに、まず構造体に直接同名のメソッドをimplして、
traitの実装ではそれを呼び出すだけ、みたいな方式でやられていました
Sがstruct、Tがtraitだとしてこんな感じです
impl S {
pub fn f(&self) {...}
}
impl T for S {
pub fn f(&self) { self.f(); }
}
これってimpl T for Sのほうに直接実装するのに比べて何かメリットがあるんでしょうか?
traitを実装するのに、まず構造体に直接同名のメソッドをimplして、
traitの実装ではそれを呼び出すだけ、みたいな方式でやられていました
Sがstruct、Tがtraitだとしてこんな感じです
impl S {
pub fn f(&self) {...}
}
impl T for S {
pub fn f(&self) { self.f(); }
}
これってimpl T for Sのほうに直接実装するのに比べて何かメリットがあるんでしょうか?
483デフォルトの名無しさん
2021/09/20(月) 23:56:14.72ID:5wFYkRVK >>480
alert()って簡易テストくらいでしか使わないような
>>481
意味が不明です
>>482
例えば今適当に作った例だけど
struct S { x: i32, y: i32, }
impl S {
fn fmt(&self) -> String {
format!("({}, {})", self.x, self.y)
}
}
impl std::fmt::Display for S {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "S{}", self.fmt())
}
}
fn main() {
let s = S { x: 123, y: 456 };
println!("{}", s.fmt()); // (123, 456)
println!("{}", s); // S(123, 456)
}
alert()って簡易テストくらいでしか使わないような
>>481
意味が不明です
>>482
例えば今適当に作った例だけど
struct S { x: i32, y: i32, }
impl S {
fn fmt(&self) -> String {
format!("({}, {})", self.x, self.y)
}
}
impl std::fmt::Display for S {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "S{}", self.fmt())
}
}
fn main() {
let s = S { x: 123, y: 456 };
println!("{}", s.fmt()); // (123, 456)
println!("{}", s); // S(123, 456)
}
484デフォルトの名無しさん
2021/09/21(火) 03:25:03.00ID:kmDESzsF485デフォルトの名無しさん
2021/09/21(火) 09:21:03.28ID:asWFySWg >>483
これ見て思ったんだけど、
メソッド名と引数全く同じだった場合で、
構造体のメソッドがpubで、
トレイトのほう優先的に呼び出したい場合ってどうするの?
そもそもメソッド名被らせるなって話ではあるんだけど
これ見て思ったんだけど、
メソッド名と引数全く同じだった場合で、
構造体のメソッドがpubで、
トレイトのほう優先的に呼び出したい場合ってどうするの?
そもそもメソッド名被らせるなって話ではあるんだけど
486482
2021/09/21(火) 10:01:30.32ID:aEoN/PBD すみません、impl Sもimpl T for Sもpubは付いていませんでした……
Tがpubなので、外部にはTの実装としてのfだけが見える状態ですね
>>483
振る舞いを変えたいなら分ける意味も分かるんですけど、完全に同じなんですよね
>>484
すっきりするというのは確かに読んでて思いました
実際非公開の関数が他にもありました
結局これが最大の理由なんですかね?
>>485
こんな感じでいけますね
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=10cdbd17798b14faa5fb6619ceb0739d
Tがpubなので、外部にはTの実装としてのfだけが見える状態ですね
>>483
振る舞いを変えたいなら分ける意味も分かるんですけど、完全に同じなんですよね
>>484
すっきりするというのは確かに読んでて思いました
実際非公開の関数が他にもありました
結局これが最大の理由なんですかね?
>>485
こんな感じでいけますね
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=10cdbd17798b14faa5fb6619ceb0739d
487デフォルトの名無しさん
2021/09/21(火) 14:10:55.34ID:QKlGGi7s 気持ち悪い
488デフォルトの名無しさん
2021/09/21(火) 20:13:53.65ID:jzXJ8gRI >>473
match お前の職場にはコーディング規約がないの? {
規約でunsafeが許されている => { ならunsafe使うの自由だろ。問題があるなら規約を改正しろ }
規約でunsafeは禁止されているが使ってるヤツがいる => { ならなんでunsafeを利用してコーディングしてるヤツがいるんだよ。そいつをなんとかしろ }
}
結論 別に許可されてるなら自由だろ
それが問題だと思うなら上司にいって禁止させるのが先
match お前の職場にはコーディング規約がないの? {
規約でunsafeが許されている => { ならunsafe使うの自由だろ。問題があるなら規約を改正しろ }
規約でunsafeは禁止されているが使ってるヤツがいる => { ならなんでunsafeを利用してコーディングしてるヤツがいるんだよ。そいつをなんとかしろ }
}
結論 別に許可されてるなら自由だろ
それが問題だと思うなら上司にいって禁止させるのが先
489デフォルトの名無しさん
2021/09/21(火) 20:16:09.40ID:jzXJ8gRI おっと最後にこれが必要か
_ => { コーディング規約ぐらい決めとけ。決められてないぐらいの組織にいるなら文句いうな。諦めるか転職しろ }
_ => { コーディング規約ぐらい決めとけ。決められてないぐらいの組織にいるなら文句いうな。諦めるか転職しろ }
490デフォルトの名無しさん
2021/09/21(火) 20:37:04.07ID:KTLm+LXj キモ
491デフォルトの名無しさん
2021/09/21(火) 20:43:04.95ID:aEoN/PBD 規約で禁止されていてみんな守ってる場合にコーディング規約決めろと怒られるバグ
492デフォルトの名無しさん
2021/09/21(火) 20:53:30.60ID:jzXJ8gRI493デフォルトの名無しさん
2021/09/21(火) 20:54:04.75ID:YS0x7nOl 動かないコーディング規約を作られても困るわ
どのタイミングでもいいから自動で弾く仕組みまで作らないと
…誰かgit hookの練習で作ってみない?
どのタイミングでもいいから自動で弾く仕組みまで作らないと
…誰かgit hookの練習で作ってみない?
494デフォルトの名無しさん
2021/09/21(火) 21:04:02.40ID:j1Ojj5Hg こういうキチガイがいて邪魔だから
競プロは専用スレを立ててそこへ隔離すること
競プロは専用スレを立ててそこへ隔離すること
495デフォルトの名無しさん
2021/09/21(火) 21:09:08.77ID:asWFySWg なんで競プロの話に規約が出てくるんすか
496デフォルトの名無しさん
2021/09/21(火) 21:32:11.36ID:4JalLCnu rust書いたことない障がい者が騒いでるな
ゴミコード晒して叩かれたのが相当悔しかったのか
なら自分の腕を磨けよ
やってることが数人しかいない過疎スレを荒らすって
どうやったらそう言う思考になるわけ
ゴミコード晒して叩かれたのが相当悔しかったのか
なら自分の腕を磨けよ
やってることが数人しかいない過疎スレを荒らすって
どうやったらそう言う思考になるわけ
497デフォルトの名無しさん
2021/09/21(火) 23:20:56.90ID:qogxB4xv そら競プロの解答コードが規約破りまくりなの見れば関係はあるわな
498デフォルトの名無しさん
2021/09/22(水) 02:11:22.59ID:U1/YCban そもそもunsafeの利用の明確な基準って決められるのか?
利用を完全に禁止することはできるかもしないが、使ってOKな条件を担当者の最良が入り込む余地がないレベルで厳密に決めるのは難しそう
利用を完全に禁止することはできるかもしないが、使ってOKな条件を担当者の最良が入り込む余地がないレベルで厳密に決めるのは難しそう
499デフォルトの名無しさん
2021/09/22(水) 03:25:11.12ID:+50nKS9n >>498
例えばVecの実装にも一部unsafeが使われておりunsafeは忌避すべきものではなく有用なものであるがその使用には厳しい条件がある
@unsafeが極狭い範囲に閉じ込められており抽象化されたインターフェースによりその存在を意識せずに使えること
Aunsafeを使用することで明白にその操作の効率が良くなるもしくは低レベル操作によりその使用が避けられないこと
Bunsafeの使用部分がその関係する範囲全体の一貫性において完全に安全な操作であると確認できること
以上3点が関係者により合意確認できている場合のみunsafeの使用が認められそして上位ではその存在を気にせず安全に使うことができる
例えばVecの実装にも一部unsafeが使われておりunsafeは忌避すべきものではなく有用なものであるがその使用には厳しい条件がある
@unsafeが極狭い範囲に閉じ込められており抽象化されたインターフェースによりその存在を意識せずに使えること
Aunsafeを使用することで明白にその操作の効率が良くなるもしくは低レベル操作によりその使用が避けられないこと
Bunsafeの使用部分がその関係する範囲全体の一貫性において完全に安全な操作であると確認できること
以上3点が関係者により合意確認できている場合のみunsafeの使用が認められそして上位ではその存在を気にせず安全に使うことができる
500デフォルトの名無しさん
2021/09/22(水) 04:21:37.31ID:HMywcfFm501デフォルトの名無しさん
2021/09/22(水) 07:58:09.34ID:5QejlQFf 使わざるを得ないパターンを提示(この時点で滅多に無い事が分かる)、当てはまらない物は原則禁止
本来要らない箇所で使おうとする輩が湧いて出ないようにするのが目的
本来要らない箇所で使おうとする輩が湧いて出ないようにするのが目的
502デフォルトの名無しさん
2021/09/22(水) 10:40:17.54ID:88WbS542 ノーコメントunsafeは問答無用で禁止くらいのことはしてもいいと思う
そのくらいunsafeはやばい
そのくらいunsafeはやばい
503デフォルトの名無しさん
2021/09/22(水) 11:36:51.20ID:Gy06LVHu stdのunsafe APIに関してはそうだと思うけど
crates.ioのライブラリ群にまでそういうの持ち出されると面倒だなあ
crates.ioのライブラリ群にまでそういうの持ち出されると面倒だなあ
504デフォルトの名無しさん
2021/09/22(水) 12:19:04.62ID:U1/YCban clippyもpubなunsafe fnにはドキュメントコメントに # Safety のセクションがないとデフォルトで警告出すので
コメントつけるのは最低限やっておくべきラインだと思う
https://rust-lang.github.io/rust-clippy/master/#missing_safety_doc
コメントつけるのは最低限やっておくべきラインだと思う
https://rust-lang.github.io/rust-clippy/master/#missing_safety_doc
505デフォルトの名無しさん
2021/09/22(水) 12:31:35.55ID:aOvfflz7 競プロの人ってレギュレーション守れば何してもいいって考え方の人が多いよね。
規約次第ってのが正にそれ。
unsafe みたいに取り扱いが繊細な機能は基本使わない、使う時には議論した上で限定的に使うみたいな感じに取り扱うのがほとんどだろ。
規約で機械的には決められないと思うよ。
規約次第ってのが正にそれ。
unsafe みたいに取り扱いが繊細な機能は基本使わない、使う時には議論した上で限定的に使うみたいな感じに取り扱うのがほとんどだろ。
規約で機械的には決められないと思うよ。
506デフォルトの名無しさん
2021/09/22(水) 13:23:06.09ID:88WbS542 競プロでunsafeなんて使わないよ
グローバル変数おじさんなら知らんけど
グローバル変数おじさんなら知らんけど
507デフォルトの名無しさん
2021/09/22(水) 13:53:44.01ID:HlHaH6ql 久々にusize祭りキタ━━━━(゚∀゚)━━━━!!
unsafe fn calc(bit: i32) -> i32 {
if bit == 0 { return 0; };
if DP[bit as usize] != -1 { return DP[bit as usize]; };
let mut start_id: i32 = 0;
for i in 1..=K_NUM { if bit & 1 << i == 0 { start_id += C_NUM[i]; }; }
let mut res: i32 = i32::MAX;
for i in 1..=K_NUM as i32 {
if bit & 1 << i > 0 {
let mut end_id: i32 = start_id + C_NUM[i as usize];
let mut num: i32 = end_id - start_id - (SUM[end_id as usize][i as usize] - SUM[start_id as usize][i as usize]);
res = res.min(calc(bit ^ 1 << i) + num);
}
}
DP[bit as usize] = res;
res
}
unsafe fn calc(bit: i32) -> i32 {
if bit == 0 { return 0; };
if DP[bit as usize] != -1 { return DP[bit as usize]; };
let mut start_id: i32 = 0;
for i in 1..=K_NUM { if bit & 1 << i == 0 { start_id += C_NUM[i]; }; }
let mut res: i32 = i32::MAX;
for i in 1..=K_NUM as i32 {
if bit & 1 << i > 0 {
let mut end_id: i32 = start_id + C_NUM[i as usize];
let mut num: i32 = end_id - start_id - (SUM[end_id as usize][i as usize] - SUM[start_id as usize][i as usize]);
res = res.min(calc(bit ^ 1 << i) + num);
}
}
DP[bit as usize] = res;
res
}
508デフォルトの名無しさん
2021/09/22(水) 13:54:58.06ID:88WbS542 なんで来るんだよおじさんー
509デフォルトの名無しさん
2021/09/22(水) 13:57:46.22ID:88WbS542 Rust競プロでグローバル変数(static mut)はマジでおすすめしないぞ、ほんまに
意味わからんWAの原因になりうる
https://qiita.com/qnighy/items/46dbf8d2aff7c2531f4e
意味わからんWAの原因になりうる
https://qiita.com/qnighy/items/46dbf8d2aff7c2531f4e
510デフォルトの名無しさん
2021/09/22(水) 15:00:43.19ID:xw08ZBoX そんなに生配列使いたいならCで書けよ
511デフォルトの名無しさん
2021/09/22(水) 19:10:57.50ID:xKA5BBWf 結局規約頼りならrust使う意味は薄いわな。
512デフォルトの名無しさん
2021/09/22(水) 20:53:41.87ID:HlHaH6ql513デフォルトの名無しさん
2021/09/22(水) 23:41:24.94ID:U1/YCban >>511
1%でもダメな箇所があったら全部ダメって考える人?
1%でもダメな箇所があったら全部ダメって考える人?
514デフォルトの名無しさん
2021/09/22(水) 23:53:53.16ID:rujUi/9T 理想的な言語には無駄など一切無いのだ
515デフォルトの名無しさん
2021/09/23(木) 00:15:25.31ID:r4yNqkwu 規約になんもないからってunsafeまみれだとぶっ叩かれるぞ
そう、actix-webの作者のように
そう、actix-webの作者のように
516デフォルトの名無しさん
2021/09/23(木) 00:24:58.81ID:Pncl1K/q >>507 添削しました。お収めくださいまし。
1. 安易にグローバル変数を使うな。状態を引数で持つくらいやれ
2. 引数bitが負になるのかくらい考えろ。脳死でi32とusizeをコピペしてるだろテメー
暗黙のキャストが無い==明示的にキャストすればいい、じゃねえぞ
パッと見て汚いなら設計が汚えんだ。動的プログラミングだから汚えんじゃねえ、テメーが汚えんだ
…負数になる可能性がある場所はたったの1行じゃねえか!どうした?頭使ってる?
4. unsafe外す努力もしねえのか、どうした?5回deleteキー押せば外れるぞ?
5. 値とインデックスが混ざるような書き方、どうして怖がらない?ロボトミー手術でも受けたのか?
6. C/C++には無い機能も使わず、warningもlinterも無視して、一体どうしてrustで書いてるんだ?
勉強中とすら言えねえじゃねえか。
まさか、VBAスクリプトを.javaファイルにコピペして「動きません!javaはクソ!」とか言っちゃう伝説のコーダーなのか?
1. 安易にグローバル変数を使うな。状態を引数で持つくらいやれ
2. 引数bitが負になるのかくらい考えろ。脳死でi32とusizeをコピペしてるだろテメー
暗黙のキャストが無い==明示的にキャストすればいい、じゃねえぞ
パッと見て汚いなら設計が汚えんだ。動的プログラミングだから汚えんじゃねえ、テメーが汚えんだ
…負数になる可能性がある場所はたったの1行じゃねえか!どうした?頭使ってる?
4. unsafe外す努力もしねえのか、どうした?5回deleteキー押せば外れるぞ?
5. 値とインデックスが混ざるような書き方、どうして怖がらない?ロボトミー手術でも受けたのか?
6. C/C++には無い機能も使わず、warningもlinterも無視して、一体どうしてrustで書いてるんだ?
勉強中とすら言えねえじゃねえか。
まさか、VBAスクリプトを.javaファイルにコピペして「動きません!javaはクソ!」とか言っちゃう伝説のコーダーなのか?
517デフォルトの名無しさん
2021/09/23(木) 01:13:45.47ID:X5xfUo6W 質問です
デフォルト値を与えるトレイトDefaultについて例えば
#[derive(Default)]
struct S { a: i32, b: i32, c: i32 } の時に
let s = S::default(); と書いても同じ結果で短いのに
let s: S = Default::default(); と書くのはDefaultトレイトのdefault()だと明示するためでしょうか?
結局deriveすると
impl Default for S {
fn default() -> Self {
S { a: 0, b: 0, c: 0 }
}
} を自動的に定義してくれるという理解であっていますか?
驚いたのは
let s = S { b: 123, ..Default:default() };
とすると残りフィールドをデフォルト値展開してくれて S { a: 0, b: 123, c: 0 } が得られることでした
そこでderiveを使わずに自分で
impl Default for S {
fn default() -> Self {
S { ..Default::default() }
}
}
と手動かつ内部をDefault::default()に任せてみたところ
再帰しているとコンパイルで警告が出て実行するとコアダンプでしたw
なぜ?
デフォルト値を与えるトレイトDefaultについて例えば
#[derive(Default)]
struct S { a: i32, b: i32, c: i32 } の時に
let s = S::default(); と書いても同じ結果で短いのに
let s: S = Default::default(); と書くのはDefaultトレイトのdefault()だと明示するためでしょうか?
結局deriveすると
impl Default for S {
fn default() -> Self {
S { a: 0, b: 0, c: 0 }
}
} を自動的に定義してくれるという理解であっていますか?
驚いたのは
let s = S { b: 123, ..Default:default() };
とすると残りフィールドをデフォルト値展開してくれて S { a: 0, b: 123, c: 0 } が得られることでした
そこでderiveを使わずに自分で
impl Default for S {
fn default() -> Self {
S { ..Default::default() }
}
}
と手動かつ内部をDefault::default()に任せてみたところ
再帰しているとコンパイルで警告が出て実行するとコアダンプでしたw
なぜ?
518デフォルトの名無しさん
2021/09/23(木) 01:38:10.01ID:pkzlOfob >>517
Default::defaultはどこでも使えるから癖で使ってる人が多いんだと思う
S { b:123, ..Default::default() }は残りのフィールドを展開するというより、
S::default()の所有権を奪ってbだけ書き換えたものを返すという理解が正しい
, ..に続くのは構築しようとしているものと同じ型の値
例えばS { a: 123, ..s }のようにも書ける
, ..Default::default()と書けばSが期待される箇所なので, ..S::default()と同様になる
以上を踏まえれば最後のコアダンプの原因はS::defaultの無限再帰によるstack overflowだと容易に理解いただけよう
Default::defaultはどこでも使えるから癖で使ってる人が多いんだと思う
S { b:123, ..Default::default() }は残りのフィールドを展開するというより、
S::default()の所有権を奪ってbだけ書き換えたものを返すという理解が正しい
, ..に続くのは構築しようとしているものと同じ型の値
例えばS { a: 123, ..s }のようにも書ける
, ..Default::default()と書けばSが期待される箇所なので, ..S::default()と同様になる
以上を踏まえれば最後のコアダンプの原因はS::defaultの無限再帰によるstack overflowだと容易に理解いただけよう
519デフォルトの名無しさん
2021/09/23(木) 02:02:07.87ID:X5xfUo6W >>518
なるほど!よく考えれば
let base = S { a: 0, b: 0, c: 0 };
let s = S { b: 123, ..base }; の時と同じstruct base式の構文だったのですね
結局、以下のように自分で展開したところ(当たり前ですが)上手く行きました
impl Default for S {
fn default() -> Self {
Self {
a: Default::default(),
b: Default::default(),
c: Default::default(),
}
}
}
なるほど!よく考えれば
let base = S { a: 0, b: 0, c: 0 };
let s = S { b: 123, ..base }; の時と同じstruct base式の構文だったのですね
結局、以下のように自分で展開したところ(当たり前ですが)上手く行きました
impl Default for S {
fn default() -> Self {
Self {
a: Default::default(),
b: Default::default(),
c: Default::default(),
}
}
}
520デフォルトの名無しさん
2021/09/23(木) 07:42:33.86ID:WWdZV+h/ Defaultトレイトのdefaultと明示するため、で合ってるよ
Arc::cloneにもそのような文化がある
Arc::cloneにもそのような文化がある
521デフォルトの名無しさん
2021/09/23(木) 11:37:02.58ID:AZNHMrAu >>513
1%のダメな箇所で他の言語の文句言ってるのはrust信者の方ですけどね。
1%のダメな箇所で他の言語の文句言ってるのはrust信者の方ですけどね。
522デフォルトの名無しさん
2021/09/23(木) 13:01:19.66ID:4xQQttIg まあ、100%良いものなんてないんだし、子供達がせっかく作ったものを評価し、使ってやるというのも、年長者の優しさってものだろう。
今までどれだけ色々な言語が作られ、流行る、主流になると言われては下火になっていったことかと思えば、Rustもまたいずれ他のものにとってかわられるのが世の流れではあるだろうが、それならそれで良いじゃないか。
諸行無常
今までどれだけ色々な言語が作られ、流行る、主流になると言われては下火になっていったことかと思えば、Rustもまたいずれ他のものにとってかわられるのが世の流れではあるだろうが、それならそれで良いじゃないか。
諸行無常
523デフォルトの名無しさん
2021/09/23(木) 13:12:55.93ID:+msTnWug >>522
Rustを置き換えるにはコンパイル時点でのメモリ安全性保証を実現しないといけない
Rustは諸問題を解決してしまったので代わりの言語は数十年出てきそうにない
もし出てきたときには手続き型ではなくなってるだろう
Rustを置き換えるにはコンパイル時点でのメモリ安全性保証を実現しないといけない
Rustは諸問題を解決してしまったので代わりの言語は数十年出てきそうにない
もし出てきたときには手続き型ではなくなってるだろう
524デフォルトの名無しさん
2021/09/23(木) 15:20:08.54ID:xxtNZLaL みずほのシステムを全部Rustで
525デフォルトの名無しさん
2021/09/23(木) 15:55:02.56ID:Ru7FlOs1 >>524
ボンクラPGは排除できるから意外と良い選択かもw
ボンクラPGは排除できるから意外と良い選択かもw
526デフォルトの名無しさん
2021/09/23(木) 16:44:35.84ID:kF5NpOzj みずほはもっとマクロなレベルでの設計の問題じゃないの知らんけど
527デフォルトの名無しさん
2021/09/23(木) 17:01:36.77ID:Sp5Iyysf つかCOBOLならもともとメモリ安全性は高いだろ
528デフォルトの名無しさん
2021/09/23(木) 17:14:42.14ID:pKS1sRJG 昔の 1% は (注意を払うという対処法で) なんとかなったが現代のコード規模の 1% は深刻だという話なんだよ。
529デフォルトの名無しさん
2021/09/23(木) 17:44:30.23ID:NjDt/riq 静的チェックでその1%が埋まると思ってるのがお気楽だなと思うわ。
530デフォルトの名無しさん
2021/09/23(木) 18:01:26.98ID:j+XImBaS usize祭りコネ━━━━(゚д゚;)━━━━!!
let mut dp = vec![i32::MAX; n_list.len() + 1];
for &i in &n_list {
for j in 0..dp.len() {
if dp[j] > i {
dp[j] = i;
break;
}
}
}
let mut cnt = n - dp.iter().filter(|&x| x != &i32::MAX).count();
let mut dp = vec![i32::MAX; n_list.len() + 1];
for &i in &n_list {
for j in 0..dp.len() {
if dp[j] > i {
dp[j] = i;
break;
}
}
}
let mut cnt = n - dp.iter().filter(|&x| x != &i32::MAX).count();
531デフォルトの名無しさん
2021/09/23(木) 18:27:08.03ID:3ZM+sTU9 vscodeでセーブした時に、ifに付けちゃった括弧を外して欲しいんだけど、何をどう設定すればいいの?
532デフォルトの名無しさん
2021/09/23(木) 18:28:49.30ID:l8duufjf 処理系の勉強をかねてRustで
ttps://www.sigbus.info/compilerbook
これをやってみようと思う
序盤で二分木&再帰・・・うへー
ttps://www.sigbus.info/compilerbook
これをやってみようと思う
序盤で二分木&再帰・・・うへー
534デフォルトの名無しさん
2021/09/23(木) 19:12:11.01ID:+qAUZiId なんかこのスレ競プロの厄介な人に乗っ取られた?
クソコードを延々と貼り付けてるあたり開き直ったか
クソコードを延々と貼り付けてるあたり開き直ったか
535デフォルトの名無しさん
2021/09/23(木) 19:15:36.83ID:+msTnWug 競プロは別スレ建てて分離しましょう
競プロの件はいずれもRustを利用&学習する人々にとって役に立たない有害なものばかりでこのスレと別件ですから
競プロの件はいずれもRustを利用&学習する人々にとって役に立たない有害なものばかりでこのスレと別件ですから
536デフォルトの名無しさん
2021/09/23(木) 19:22:24.57ID:pkzlOfob 競技プログラミング総合スレ 63
https://mevius.5ch.net/test/read.cgi/tech/1627477128/
https://mevius.5ch.net/test/read.cgi/tech/1627477128/
537デフォルトの名無しさん
2021/09/23(木) 19:48:26.70ID:j+XImBaS >>535
いやRustで競プロをする人もいるじゃんね
Rustを使用している人は、仕事だけの人、競プロだけの人、仕事でも競プロで使う人、のそれぞれの合計
ということは、そこから競プロを排除するってことは、より少ない人数だけを対象にするスレを立てるってことだから、
競プロの話題を禁止したい人が、「Rust原理主義者スレ」とでもして、自分たちが別スレをたてて
原理主義者たちだけで移動するのが論理的かつ合理的ヽ(´ー`)ノ
いやRustで競プロをする人もいるじゃんね
Rustを使用している人は、仕事だけの人、競プロだけの人、仕事でも競プロで使う人、のそれぞれの合計
ということは、そこから競プロを排除するってことは、より少ない人数だけを対象にするスレを立てるってことだから、
競プロの話題を禁止したい人が、「Rust原理主義者スレ」とでもして、自分たちが別スレをたてて
原理主義者たちだけで移動するのが論理的かつ合理的ヽ(´ー`)ノ
538デフォルトの名無しさん
2021/09/23(木) 20:01:59.63ID:jGNo4sQ0 とキチガイが申しております
539デフォルトの名無しさん
2021/09/23(木) 20:06:06.82ID:pkzlOfob >>537
あなたはまず何の説明も無しにコード貼り散らかして祭りだとか言うことの目的を教えなさいよ
あなたはまず何の説明も無しにコード貼り散らかして祭りだとか言うことの目的を教えなさいよ
540デフォルトの名無しさん
2021/09/23(木) 20:19:26.28ID:O5HtXMYP ブログトップにキモい自撮り写真貼ってるやつを見てから
競プロ臭のくっさいコードはスルーすることに決めてる
競プロ臭のくっさいコードはスルーすることに決めてる
541デフォルトの名無しさん
2021/09/23(木) 20:34:50.85ID:j+XImBaS >>538-540
スレッドは知識の集合知である場所だと思うから、
B木を考えても、情報が細分化される場合には、
携わる人数(情報)が少ないほうを葉にするのが妥当だと思うけど
>>539
Rustにはメリットもあるし、デメリットもある
様々な側面から、こういうことがあり得るとか、こういうこともできるとか
そういう情報がプラスになるんじゃないかと思っている
仕事のみの人にとっては競プロの書き方は我流だと思うだろうし、
競プロでも書いている人は、別に仕事で競プロの書き方はしてないが
直感的にやりたいことができないこともあるという思いもある
そのあたりの折り合いを付けるのが正しいRustスレなんだと思うんだよね。個人的に。
だから競プロ以外の話をしたいなら、原理主義スレを立てればいいし、
競プロだけの話をしたいなら、競プロスレを立てればいい。
ただし、ここはRustのrootだと解釈している
スレッドは知識の集合知である場所だと思うから、
B木を考えても、情報が細分化される場合には、
携わる人数(情報)が少ないほうを葉にするのが妥当だと思うけど
>>539
Rustにはメリットもあるし、デメリットもある
様々な側面から、こういうことがあり得るとか、こういうこともできるとか
そういう情報がプラスになるんじゃないかと思っている
仕事のみの人にとっては競プロの書き方は我流だと思うだろうし、
競プロでも書いている人は、別に仕事で競プロの書き方はしてないが
直感的にやりたいことができないこともあるという思いもある
そのあたりの折り合いを付けるのが正しいRustスレなんだと思うんだよね。個人的に。
だから競プロ以外の話をしたいなら、原理主義スレを立てればいいし、
競プロだけの話をしたいなら、競プロスレを立てればいい。
ただし、ここはRustのrootだと解釈している
542デフォルトの名無しさん
2021/09/23(木) 21:50:54.44ID:9wzKaMiq ってことで以降は競プロ禁止
やりたい人は競プロのスレで
やりたい人は競プロのスレで
543デフォルトの名無しさん
2021/09/23(木) 22:02:49.74ID:j+XImBaS >>542
そういう強権的なやり方は嫌われると思う
そういう強権的なやり方は嫌われると思う
544デフォルトの名無しさん
2021/09/23(木) 22:22:06.57ID:WWdZV+h/ 俺はお前が嫌い
545デフォルトの名無しさん
2021/09/23(木) 22:56:16.76ID:pkzlOfob546デフォルトの名無しさん
2021/09/23(木) 23:17:56.15ID:Peq2Gbnq codeLLDBを消去しやがるからavastアンインストールしてやったわ
547デフォルトの名無しさん
2021/09/24(金) 00:59:53.09ID:HPu5FO6/ >>541 添削しました。お納めください。
1. Cをそのままコピペしただけじゃねえか
Rustの機能を試すだぁ?enumもtraitもパターンマッチも使えないのに何が検証だ馬鹿野郎
「Cコピペしたけどメリット無いね!」って後何回繰り返すんだ?
2. なんだこの察してちゃんなコードは。保育園にいるつもりか?
意図の明確なコードが1行も無いんだが?
3. お前がここにゴミを貼る妥当性が一つも無い
Rustの世界に持ってきた概念のどれも使わないで、何が検証できると思ってるんだ?
例えるなら「ひらがなしか知らない外国人が日本語の良し悪しを検証します!」っていうもんだぞ
誰がマトモに付き合うんだ?
1. Cをそのままコピペしただけじゃねえか
Rustの機能を試すだぁ?enumもtraitもパターンマッチも使えないのに何が検証だ馬鹿野郎
「Cコピペしたけどメリット無いね!」って後何回繰り返すんだ?
2. なんだこの察してちゃんなコードは。保育園にいるつもりか?
意図の明確なコードが1行も無いんだが?
3. お前がここにゴミを貼る妥当性が一つも無い
Rustの世界に持ってきた概念のどれも使わないで、何が検証できると思ってるんだ?
例えるなら「ひらがなしか知らない外国人が日本語の良し悪しを検証します!」っていうもんだぞ
誰がマトモに付き合うんだ?
548デフォルトの名無しさん
2021/09/24(金) 01:50:08.20ID:Dee2NcuI >>529
CやC++だと非安全コードはどこにでも現れる可能性があるので100%のコードを人力で確認する必要があったが
rustでは安全性に関してはunsafeな部分のみ(例えば全体の1%)を確認すれば良いという話では
静的チェックで100%なんとかしようという話はしていないと思うが
CやC++だと非安全コードはどこにでも現れる可能性があるので100%のコードを人力で確認する必要があったが
rustでは安全性に関してはunsafeな部分のみ(例えば全体の1%)を確認すれば良いという話では
静的チェックで100%なんとかしようという話はしていないと思うが
549デフォルトの名無しさん
2021/09/24(金) 02:35:54.11ID:Bn8yEU3N そうだなーと思う反面unsafeだらけのコードを目の前にしてげんなりする未来も見えるという…
550デフォルトの名無しさん
2021/09/24(金) 04:43:03.82ID:ow12Eod1 ほとんどの用途でunsafeを直接使うことは無いんじゃない?
グローバル変数はOnceCellで解決してしまったし
もし生ポ操作するとしたら新たな型を作ってその中に閉じ込める
グローバル変数はOnceCellで解決してしまったし
もし生ポ操作するとしたら新たな型を作ってその中に閉じ込める
551デフォルトの名無しさん
2021/09/24(金) 08:02:15.31ID:ljIO2QUf そういうコードが書ける事が問題だとあれほど批判してたのに
552デフォルトの名無しさん
2021/09/24(金) 08:30:26.85ID:ow12Eod1553デフォルトの名無しさん
2021/09/24(金) 10:22:26.34ID:RvXrBe+X >>551
どのレスに対するコメント?
どのレスに対するコメント?
554デフォルトの名無しさん
2021/09/24(金) 13:18:46.57ID:/gk8ByXn そもそも競プロにメモリ安全性とかいらないしC++で書いといてくださいよ
555デフォルトの名無しさん
2021/09/24(金) 14:03:53.31ID:6DqL6o69 Rustの良いところはメモリ安全だけではなかろう?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国大使館、ついにXで尖閣諸島が領土と主張「何を言おうと釣魚島が中国に属する」に反発続々 [パンナ・コッタ★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」★2 [ぐれ★]
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 ★2 [蚤の市★]
- 【野球】「地上波で放送しないWBC」は2軍選手中心で十分! 今こそネットフリックスに『ノー』を突き付けてほしい 江本氏が提言 [冬月記者★]
- 『DOWNTOWN+』会員数50万人突破で見えてきた 松本人志の“月収4ケタ万円”驚愕収入 [阿弥陀ヶ峰★]
- 国民・榛葉氏「中国焦ってる」 ★2 [ぐれ★]
- 福島競馬3回5日目
- こいせん 全レス転載禁止
- 巨専】
- とらせん IP
- 【J SPORTS】FIFA U-17ワールドカップ ★12
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1806
- 【高市悲報】スーパーさん、物価が上がって惣菜とかの値段がセブンイレブンとかコンビニと変わらなくなるwwwwwwwwwwww [257926174]
- 【実況】博衣こよりのえちえちゼルダの伝説 ムジュラの仮面🧪
- 高市早苗、車のナンバーに37-77を愛用しているのが中国人に見つかる。盧溝橋事件の1937年7月7日を記念してか [624898991]
- 【悲報】高市政権関係者「閣僚には円安が何かよくわかってない人がいる」「総理もデメリットを理解してない」🤤 [359965264]
- 日本を安売りし続ける自民党。保守とはなんだろう。売国奴のことだろうか [667744927]
- 【悲報】イタリア、終わる… 世界屈指の少子高齢化社会に経済停滞、深刻な地方過疎化、国民にもあきらめムード蔓延… [452836546]
