公式
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を学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※次スレは原則>>980が立てること
前スレ
Rust part15
https://mevius.5ch.net/test/read.cgi/tech/1652347700/
探検
Rust part16
レス数が900を超えています。1000を超えると表示できなくなるよ。
2022/06/27(月) 08:17:03.45ID:gDlfKP6u
821デフォルトの名無しさん
2022/09/26(月) 00:07:36.94ID:h/WE7ZWH >>820
すまん rust だと cargo test で単体テストを実施するみたいだけど mook/stub をどうやって使うかはよくわからんかったわ
C++ とかだと googlemook とか使ってテスト用のモッククラスを作って入れ替えるかたちだね
すまん rust だと cargo test で単体テストを実施するみたいだけど mook/stub をどうやって使うかはよくわからんかったわ
C++ とかだと googlemook とか使ってテスト用のモッククラスを作って入れ替えるかたちだね
822デフォルトの名無しさん
2022/09/26(月) 00:33:03.55ID:TCGzsvbI mockall使うとか
823デフォルトの名無しさん
2022/09/26(月) 06:28:19.26ID:p/pWEmYs cargo testで関数テスト、モジュールテスト、モジュール間テストなどあらゆるテストをやっているけどダメなの?
824デフォルトの名無しさん
2022/09/26(月) 06:47:39.41ID:h/WE7ZWH825デフォルトの名無しさん
2022/09/26(月) 19:21:24.42ID:kI3cAlPQ モックやスタブは別モジュール化しておいて
mod tests内では本物モジュールをuseする代わりにそれをuseするだけじゃないの?
mod tests内では本物モジュールをuseする代わりにそれをuseするだけじゃないの?
826デフォルトの名無しさん
2022/09/26(月) 19:31:47.69ID:V9yeC/LF あと#[cfg(test)]でそれをuse
そして#[cfg(not(test))]で本物use
そして#[cfg(not(test))]で本物use
827デフォルトの名無しさん
2022/09/26(月) 19:31:51.25ID:i/jndsoD 他の言語でもユーティリティを使わずに、DIやモックを自分でやったことがないんだろうな
説明が面倒だ
説明が面倒だ
828デフォルトの名無しさん
2022/09/26(月) 19:38:20.09ID:V9yeC/LF >>827
テスト以外の開発の話でも
フレームワークに依存してやってる人は
単純なこと含めて本質的なことを理解してない人が多く
フレームワークなしでは何も分からず何も出来なくなってしまう例を時々見かける
テスト以外の開発の話でも
フレームワークに依存してやってる人は
単純なこと含めて本質的なことを理解してない人が多く
フレームワークなしでは何も分からず何も出来なくなってしまう例を時々見かける
829デフォルトの名無しさん
2022/09/26(月) 21:10:39.16ID:qW/k82Qg cfg使えば良いじゃないって人は#ifまみれで一見しただけじゃ
何がどう動くんだか判らないCのコードを正当化するつもりなのだろうか
Rustは人間が注意すれば問題ないみたいな考えはレガシーで時代遅れだ
という思想の言語だと思っているんだが違うのかな
何がどう動くんだか判らないCのコードを正当化するつもりなのだろうか
Rustは人間が注意すれば問題ないみたいな考えはレガシーで時代遅れだ
という思想の言語だと思っているんだが違うのかな
830デフォルトの名無しさん
2022/09/26(月) 21:41:35.64ID:w5YNQb64831デフォルトの名無しさん
2022/09/26(月) 23:33:07.51ID:h/WE7ZWH >>829
cfg使わないで済むいい方法があるなら書いてよ...
cfg使わないで済むいい方法があるなら書いてよ...
832デフォルトの名無しさん
2022/09/27(火) 01:17:35.37ID:OwORQ6vn mod tests に cfg(test) は必要だとして
依存性の注入にはtrait使えって事なのでは
依存性の注入にはtrait使えって事なのでは
833デフォルトの名無しさん
2022/09/27(火) 07:51:04.95ID:f9SEu4pT traitで置き換え可能にするのが面倒というのはありそうだな。
834デフォルトの名無しさん
2022/09/27(火) 08:15:53.87ID:SBVoZTui AMD64のデフォルトのオペランドサイズは32bitなのにusizeが64bitなのは何でなのかな
835デフォルトの名無しさん
2022/09/27(火) 11:05:22.42ID:OwORQ6vn size_tが64bitだからでは
837デフォルトの名無しさん
2022/09/27(火) 19:04:38.56ID:ZwmfNOl5 >>831
単体テストで、依存を分離するのは当然のことすぎてみんな説明が億劫になってる
C++だろうがRubyだろうが、モックやスタブを使って、関数同士やクラス同士の依存を切り分けてテストするのは当たり前
そうしないとそもそも単体テストにならないじゃん
わかってる人にしかわからないであろう簡略な説明をすると、テスト用のエントリポイントで、テストに使うモックオブジェクトを指定するだけだよ
そういうことができるようにあらかじめコード設計しておかないといけないがな
考えてなかったならリファクタが必要
単体テストで、依存を分離するのは当然のことすぎてみんな説明が億劫になってる
C++だろうがRubyだろうが、モックやスタブを使って、関数同士やクラス同士の依存を切り分けてテストするのは当たり前
そうしないとそもそも単体テストにならないじゃん
わかってる人にしかわからないであろう簡略な説明をすると、テスト用のエントリポイントで、テストに使うモックオブジェクトを指定するだけだよ
そういうことができるようにあらかじめコード設計しておかないといけないがな
考えてなかったならリファクタが必要
838デフォルトの名無しさん
2022/09/27(火) 19:48:22.41ID:J8MleXan そんなフワフワした説明されても...
839デフォルトの名無しさん
2022/09/27(火) 19:51:56.44ID:AWnlNGZp 本物と異なり決まった値を返す送信元スタブと
本物と異なりassertだけする送信先モックを
mod testsの中では本物の代わりにuseするだけだよね
入れ替えちゃうからtrait制約で本物も偽物も受け付け対応とかわざわざする必要ないよね
本物と異なりassertだけする送信先モックを
mod testsの中では本物の代わりにuseするだけだよね
入れ替えちゃうからtrait制約で本物も偽物も受け付け対応とかわざわざする必要ないよね
840デフォルトの名無しさん
2022/09/28(水) 00:44:24.76ID:JQpGo85s >>839
useしたモックをどうやって注入すんの
関数の引数もstatic変数でも良いけど、テスト対象の実装がモックも本物も選択的に使えるようにするならば、
genericな型を受け付けるような実装にしておかないといけないのでtraitが登場するのでは
それともmod testsの外もcfgで置き換えると言っている?
useしたモックをどうやって注入すんの
関数の引数もstatic変数でも良いけど、テスト対象の実装がモックも本物も選択的に使えるようにするならば、
genericな型を受け付けるような実装にしておかないといけないのでtraitが登場するのでは
それともmod testsの外もcfgで置き換えると言っている?
841デフォルトの名無しさん
2022/09/28(水) 00:48:00.37ID:JQpGo85s 要は
use imp::Foo;
fn target(foo: Foo) {}
がテスト対象だとして
mod tests {
use mock::Foo;
#[test]
fn test() {
target(Foo::new());
}
}
してもコンパイル通らないよね
targetがimp::Fooもmock::Fooも受け付けるようにするにはtraitが必要では
use imp::Foo;
fn target(foo: Foo) {}
がテスト対象だとして
mod tests {
use mock::Foo;
#[test]
fn test() {
target(Foo::new());
}
}
してもコンパイル通らないよね
targetがimp::Fooもmock::Fooも受け付けるようにするにはtraitが必要では
842デフォルトの名無しさん
2022/09/28(水) 07:20:15.72ID:1i04Jlqk traitが無い言語では無理ってこと??
843デフォルトの名無しさん
2022/09/28(水) 11:35:17.56ID:RLf9Yg7w >>842
他の言語は他のやり方でやってるだけだろ
他の言語は他のやり方でやってるだけだろ
844デフォルトの名無しさん
2022/09/29(木) 01:43:05.00ID:xXycU9Ev u32 を格納する型が必要になり、また、逆に u32 に変換する必要もあるという状況で
せっかくだから u32 に変換可能な型は受け入れようと考えてこんなコードを書きました。
しかしエラーになります。
struct Code(u32);
impl<T: Into<u32>> From<T> for Code {
fn from(x: T) -> Self {
Code(x.into())
}
}
impl From<Code> for u32 {
fn from(Code(x): Code) -> Self {
x
}
}
結果的に自分自身への変換を許すことになってしまうのが既存 (標準ライブラリ)
の定義と衝突しているという理屈は理解しているのですが、
問題を解消するためにこの定義が受け入れる範囲から自分自身 (Code) は除外するように
うまく制約を付ける方法は思いつきません。
そもそもこんなところで勝手に変換するのがよくない作法だとかそういうのは脇に置いて
「自分自身だけ除外するような制約」を上手いこと表現できませんかね?
せっかくだから u32 に変換可能な型は受け入れようと考えてこんなコードを書きました。
しかしエラーになります。
struct Code(u32);
impl<T: Into<u32>> From<T> for Code {
fn from(x: T) -> Self {
Code(x.into())
}
}
impl From<Code> for u32 {
fn from(Code(x): Code) -> Self {
x
}
}
結果的に自分自身への変換を許すことになってしまうのが既存 (標準ライブラリ)
の定義と衝突しているという理屈は理解しているのですが、
問題を解消するためにこの定義が受け入れる範囲から自分自身 (Code) は除外するように
うまく制約を付ける方法は思いつきません。
そもそもこんなところで勝手に変換するのがよくない作法だとかそういうのは脇に置いて
「自分自身だけ除外するような制約」を上手いこと表現できませんかね?
845デフォルトの名無しさん
2022/09/29(木) 02:16:48.63ID:zId7dOnm 無い
846デフォルトの名無しさん
2022/09/29(木) 02:20:01.39ID:7xp1eqla そっかー
847デフォルトの名無しさん
2022/09/29(木) 02:40:21.97ID:U5dWXlr2 そういうのはIntoCodeみたいな感じで別トレイトにすることが多い気がする
https://docs.rs/axum/latest/axum/response/trait.IntoResponse.html
https://docs.rs/axum/latest/axum/response/trait.IntoResponse.html
848デフォルトの名無しさん
2022/09/30(金) 02:17:04.59ID:Yj/X+hjS 初歩的なことですまんけどさ
メソッド内で↓みたいなのってよく見るけど、こう言うのってself.asdfのまま使用するのに比べてどういった利点があるの?
let asdf = self.asdf;
メソッド内で↓みたいなのってよく見るけど、こう言うのってself.asdfのまま使用するのに比べてどういった利点があるの?
let asdf = self.asdf;
849デフォルトの名無しさん
2022/09/30(金) 10:23:40.27ID:1sTGpNyR 名前を短くする目的が99パー
850デフォルトの名無しさん
2022/09/30(金) 11:00:13.39ID:tNhbOFxw クロージャーで構造体のフィールドにアクセスすると構造体ごとムーブしちゃうんでそれ対策じゃないかな
2021で対策されたからどんどん減ってくだろうけど
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=ebea0bd9611104e7a90eb8dfcb9899c9
2021で対策されたからどんどん減ってくだろうけど
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=ebea0bd9611104e7a90eb8dfcb9899c9
851デフォルトの名無しさん
2022/09/30(金) 12:43:57.87ID:NYKsqXq4 書き方は違うけどフィールドそれぞれに対して処理を行う場合に抜け漏れがないことをコンパイラにチェックさせる目的でローカル変数にすることはある
let Foo { foo, bar. baz } = self;
としておくと後続の処理で使わないフィールドがあったときにコンパイラが警告してくれる
構造体に新たにフィールド追加した場合も分割代入の箇所でコンパイルエラーになるので修正必要箇所を洗い出すことができる
let Foo { foo, bar. baz } = self;
としておくと後続の処理で使わないフィールドがあったときにコンパイラが警告してくれる
構造体に新たにフィールド追加した場合も分割代入の箇所でコンパイルエラーになるので修正必要箇所を洗い出すことができる
852デフォルトの名無しさん
2022/09/30(金) 13:52:13.77ID:yzoXDHK/ >>851
なんかすごくモヤモヤする
なんかすごくモヤモヤする
853デフォルトの名無しさん
2022/09/30(金) 14:15:24.65ID:oHn8O8ll 本人は俺ってスゲー、天才やん!
って思ってるんだろうけど後でコード見たらなんでこんなイミフなことしてるんだ?バカじゃねーの
ってなるパターンかと
まあこういう工夫をすること自体は悪くない
って思ってるんだろうけど後でコード見たらなんでこんなイミフなことしてるんだ?バカじゃねーの
ってなるパターンかと
まあこういう工夫をすること自体は悪くない
854デフォルトの名無しさん
2022/09/30(金) 14:42:00.50ID:M1og6e+j フィールドそれぞれに処理をするシチュエーションがわからない
855デフォルトの名無しさん
2022/09/30(金) 14:50:06.85ID:temvUu5a856デフォルトの名無しさん
2022/09/30(金) 14:55:47.39ID:t/wNXSJY >>851
これいいな
これいいな
857デフォルトの名無しさん
2022/09/30(金) 15:59:33.74ID:XmkFmofe こうやって自己満足の意味不明なコードが量産されていく
858デフォルトの名無しさん
2022/09/30(金) 16:19:08.34ID:GH/ZHf2N 全フィールド舐めるのが重要な処理ってシリアライズとかだろうか
そんな小手先のテクニックとかじゃなくてproc_macro組んだ方がいいと思う
シリアライズしたいだけならserde使って#[derive(Serialize)]
これも結局proc_macroだわな
そんな小手先のテクニックとかじゃなくてproc_macro組んだ方がいいと思う
シリアライズしたいだけならserde使って#[derive(Serialize)]
これも結局proc_macroだわな
859デフォルトの名無しさん
2022/09/30(金) 17:36:27.38ID:NYKsqXq4 コマンドライン引数や設定ファイルの定義をclap::Argやserde::Deserializeで宣言的にやって、
それらを処理するところで分割代入してローカル変数にして処理してる
人間が意識的に気をつける必要がある箇所を極力減らしたい気持ちでやっている
好き嫌いあるかも知れないけど趣味プロダクトだしコーディングの意図をコメントに残してるから許せ
それらを処理するところで分割代入してローカル変数にして処理してる
人間が意識的に気をつける必要がある箇所を極力減らしたい気持ちでやっている
好き嫌いあるかも知れないけど趣味プロダクトだしコーディングの意図をコメントに残してるから許せ
860デフォルトの名無しさん
2022/10/01(土) 02:29:47.97ID:hYwRxeDD >>844
impl<T: Into<u32>> From<T> for Code {}の定義はFromの反射性と衝突するから間違ってる。
Into<u32>を受け付けたいなら関数のパラメタの型をT: Into<u32> or impl Into<u32>にすればいい。
まあ、実装上の規約として必要なんで内部ではtrait IntoFooはパターンとして使われるけど外に漏らすようなものでもない。
impl<T: Into<u32>> From<T> for Code {}の定義はFromの反射性と衝突するから間違ってる。
Into<u32>を受け付けたいなら関数のパラメタの型をT: Into<u32> or impl Into<u32>にすればいい。
まあ、実装上の規約として必要なんで内部ではtrait IntoFooはパターンとして使われるけど外に漏らすようなものでもない。
861デフォルトの名無しさん
2022/10/01(土) 02:38:45.63ID:6voBA5Ft &(T, U)と(&T, &U)って等価ですか?
862デフォルトの名無しさん
2022/10/01(土) 05:47:36.69ID:6w1pI6Co 等価ではありません
863デフォルトの名無しさん
2022/10/01(土) 19:20:52.10ID:LqnhFBhC アドレスを考えれば明白に別物
一方で
let t = (123, "abc");
let (x, y) = &t;
と自動マッチングしてくれて
&t の型は &(i32, &str)
x の型は &i32
y の型は &&str
となる
つまり&(T, U)が(&T, &U)に分割代入される
一方で
let t = (123, "abc");
let (x, y) = &t;
と自動マッチングしてくれて
&t の型は &(i32, &str)
x の型は &i32
y の型は &&str
となる
つまり&(T, U)が(&T, &U)に分割代入される
864デフォルトの名無しさん
2022/10/02(日) 10:11:02.15ID:vdaryILR test
865デフォルトの名無しさん
2022/10/03(月) 22:39:32.97ID:zgM1XF6F amd64ターゲットでアセンブラリストを吐かせてみたらr13が全く使用されていないんだけど
r14、r15よりr13を空けておく理由がなにかあるのかな
r14、r15よりr13を空けておく理由がなにかあるのかな
866デフォルトの名無しさん
2022/10/03(月) 23:46:41.15ID:cMmfYMlm >>865
そんな不吉なレジスタなんか使うな!
そんな不吉なレジスタなんか使うな!
867デフォルトの名無しさん
2022/10/04(火) 00:38:55.95ID:1GTeu6AF うまく表現できないのですが、cやc++なら部分から始められる(動くものが作ることができる)のですけど、rustはそんな気がしないというか
伝わりにくいかもしれませんけど
伝わりにくいかもしれませんけど
868デフォルトの名無しさん
2022/10/04(火) 00:52:50.22ID:4fgdKnMe そういう事象をちゃんと論理がとおった表現ができないからrustが使えないんだよきみは!
869デフォルトの名無しさん
2022/10/04(火) 07:13:44.70ID:vxOZn4OH 作りたいものの設計のイメージがc++でできているならそれをrust化するのは比較的簡単だろうしそれができないならrustの基本的な理解が足りないだけかと
870デフォルトの名無しさん
2022/10/04(火) 07:32:23.41ID:LLw3rM8F Rustはデータ構造を最初に設計しないといけないというのはあるな
C++でもちゃんとそういうやり方が出来てるなら素直に移行できるだろうけど
雑にポインタ持ち回ったり実装の都合でアドホックに相互参照入れちゃったりする人には厳しいだろう
C++でもちゃんとそういうやり方が出来てるなら素直に移行できるだろうけど
雑にポインタ持ち回ったり実装の都合でアドホックに相互参照入れちゃったりする人には厳しいだろう
871デフォルトの名無しさん
2022/10/04(火) 08:55:50.45ID:fDq9dWrD C系は良くも悪くも動いてしまうんよな
そんで知らぬ間に副作用まみれになっている
そんで知らぬ間に副作用まみれになっている
872デフォルトの名無しさん
2022/10/04(火) 09:10:45.14ID:9SKodj4D >>867
慣れの問題も大きいのでは
慣れの問題も大きいのでは
873はちみつ餃子 ◆8X2XSCHEME
2022/10/04(火) 09:22:15.67ID:P4nmisNi 雑に始めてから整理していくスタイルなら C++ のほうがやりやすいというのは理解できる。
でも雑に始めたら整理する機会などないのが現実。
でも雑に始めたら整理する機会などないのが現実。
874デフォルトの名無しさん
2022/10/04(火) 09:24:31.25ID:BONyu2jp >>867 ですが、
部分から始められるというのは、部分的な学習からということです
ここまで学習すればここまではできるとか
rustでは最初のプログラムを作るにもたくさんのことを知らなければならないというか
Haskellをかじったことがあり、とても興味深いのですが
わかりにくい独り言に、レスをくださってありがとうございました
部分から始められるというのは、部分的な学習からということです
ここまで学習すればここまではできるとか
rustでは最初のプログラムを作るにもたくさんのことを知らなければならないというか
Haskellをかじったことがあり、とても興味深いのですが
わかりにくい独り言に、レスをくださってありがとうございました
875はちみつ餃子 ◆8X2XSCHEME
2022/10/04(火) 09:48:05.73ID:P4nmisNi >>874
> 部分的な学習から
できない。
部分的に学習して何かができたように見えても必ず間違ったものを書いているのが C++ というもの。
学習を進めていくにつれて間違っていたことに何度も気づくのでうんざりした経験があるだろ?
> 部分的な学習から
できない。
部分的に学習して何かができたように見えても必ず間違ったものを書いているのが C++ というもの。
学習を進めていくにつれて間違っていたことに何度も気づくのでうんざりした経験があるだろ?
876デフォルトの名無しさん
2022/10/04(火) 10:23:23.92ID:5od2FDFX 部分的な学習ってのは
C with classes -> STL -> move
みたいな感じじゃない?
他人のコード読むなら全部必要だけど、独習してる分には最初テンプレートとかなくてもいけるでしょ
C with classes -> STL -> move
みたいな感じじゃない?
他人のコード読むなら全部必要だけど、独習してる分には最初テンプレートとかなくてもいけるでしょ
877デフォルトの名無しさん
2022/10/04(火) 12:43:12.54ID:7zYgBA5I878デフォルトの名無しさん
2022/10/04(火) 12:54:59.39ID:zVqHX6VA 借用と実体(所有権)を常に意識しなきなならんからね
Cだと全部ポインタ使うから意識しないんだけどね
Cだと全部ポインタ使うから意識しないんだけどね
879デフォルトの名無しさん
2022/10/04(火) 13:01:26.34ID:NJ6V6LdV どんなプログラミング言語でもいいから何か言語を学習済みの人にとって
他の言語を学習するのは部分的に段階的にすることが可能だよ
もちろんRustでも同じで初心者向けの学習本
The Rust Programming Language
https://doc.rust-jp.rs/book-ja/
を順番に少しずつ進めれば部分的に段階的に学習できるよ
他の言語を学習するのは部分的に段階的にすることが可能だよ
もちろんRustでも同じで初心者向けの学習本
The Rust Programming Language
https://doc.rust-jp.rs/book-ja/
を順番に少しずつ進めれば部分的に段階的に学習できるよ
880デフォルトの名無しさん
2022/10/04(火) 13:14:23.44ID:fXb8hG+g881はちみつ餃子 ◆8X2XSCHEME
2022/10/04(火) 13:25:41.11ID:P4nmisNi >>877
> 関数呼出-変数あたりに概念のデカイ塊がある
C++ にもある。
あるのに中途半端な状態で間違った使い方が出来てしまうのが問題の根源。
まともに機能していないことに気づかずに
機能するプログラムを作れていると誤解して後になって結局は行き詰る。
>> 878
意識する必要はある。
コンパイラが検証してくれないのだからむしろ C のほうが強く意識する。
> 関数呼出-変数あたりに概念のデカイ塊がある
C++ にもある。
あるのに中途半端な状態で間違った使い方が出来てしまうのが問題の根源。
まともに機能していないことに気づかずに
機能するプログラムを作れていると誤解して後になって結局は行き詰る。
>> 878
意識する必要はある。
コンパイラが検証してくれないのだからむしろ C のほうが強く意識する。
882デフォルトの名無しさん
2022/10/04(火) 13:37:36.16ID:pLeAl7hn まずは(Copy実装型の)数値演算だけやって変数と関数の使い方を覚えればいいだけじゃん
所有権なんて出て来ないぜ
その後にようやく数値の配列をやってその参照渡しと可変参照渡しを学ぶ
といったように順番にちよっとずつ学習していけば全くの初心者でも躓くことはない
所有権なんて出て来ないぜ
その後にようやく数値の配列をやってその参照渡しと可変参照渡しを学ぶ
といったように順番にちよっとずつ学習していけば全くの初心者でも躓くことはない
883デフォルトの名無しさん
2022/10/04(火) 13:44:23.36ID:0vVjyJiG 相変わらず複オジはクソだな
884デフォルトの名無しさん
2022/10/04(火) 13:49:35.50ID:ez1nu7fa 部分的な学習ができないと主張してるやつは、いきなり無茶なことをしてるバカだけだな。
885デフォルトの名無しさん
2022/10/04(火) 14:54:07.07ID:zVqHX6VA886デフォルトの名無しさん
2022/10/04(火) 15:06:46.90ID:ZhUau2yw 言語の学習ではあまりないと思うけど複数のコンポーネントを全て完動させないと到達出来ない領域があるのは確か
レイヤーが下がるとそう言うのも珍しくない
レイヤーが下がるとそう言うのも珍しくない
887デフォルトの名無しさん
2022/10/04(火) 15:37:58.58ID:attOzucb >>885
それは一気に全てを理解しないといけないと思い込んでるアホ人間だから
初心者のうちはfor文なんてざっくりした理解で十分に学習をどんどん進められる
後にIntoIteratorを理解する段階になってようやくfor文を完全に正解に理解すればよい
それは一気に全てを理解しないといけないと思い込んでるアホ人間だから
初心者のうちはfor文なんてざっくりした理解で十分に学習をどんどん進められる
後にIntoIteratorを理解する段階になってようやくfor文を完全に正解に理解すればよい
888デフォルトの名無しさん
2022/10/04(火) 15:56:25.04ID:NBwKbSDK 初心者がなんか言ってるwww
889デフォルトの名無しさん
2022/10/04(火) 16:01:39.35ID:zVqHX6VA890デフォルトの名無しさん
2022/10/04(火) 16:03:22.02ID:LLFCSjL7 >>886
それは言語の学習と関係ないよね
Rust固有の話でもないね
つまり今回の話と全く関係ないでしょう
ちなみにそういう時はサンプルコードなどをまずは魔法の呪文とブラックボックスとして受け入れましょう
そして一つずつ把握する範囲を広げていけばよいのです
失敗する人は最初から全てを把握しようとする人だけです
それは言語の学習と関係ないよね
Rust固有の話でもないね
つまり今回の話と全く関係ないでしょう
ちなみにそういう時はサンプルコードなどをまずは魔法の呪文とブラックボックスとして受け入れましょう
そして一つずつ把握する範囲を広げていけばよいのです
失敗する人は最初から全てを把握しようとする人だけです
891はちみつ餃子 ◆8X2XSCHEME
2022/10/04(火) 16:06:42.76ID:P4nmisNi >>885
問題点が分かってきた。
「部分的な学習」というのは項目をひとつきちんと理解してから次の項目の学習に移るみたいなスタイルを前提としているんじゃないか?
俺が思ってた学習スタイルは「概念が存在していることは知っている」という程度の全体像から解像度を上げていくような方向性だった。
機能は互いに連携するので「この部分は完璧にわかっているけど他はまだ」なんて状況は有りえんし、そういう学習方法できちんと身につくとは思わない。
(もちろん人によってやりやすいスタイルはあるのだろうけども、個人的にはオススメ出来ない。)
流し読み程度でも入門書を一度読めば (細かい借用規則を覚えていなくても) iter を使うくらいは出来るよ。
そこから何度でも読んで細かい理解を深めていくんだよ。
問題点が分かってきた。
「部分的な学習」というのは項目をひとつきちんと理解してから次の項目の学習に移るみたいなスタイルを前提としているんじゃないか?
俺が思ってた学習スタイルは「概念が存在していることは知っている」という程度の全体像から解像度を上げていくような方向性だった。
機能は互いに連携するので「この部分は完璧にわかっているけど他はまだ」なんて状況は有りえんし、そういう学習方法できちんと身につくとは思わない。
(もちろん人によってやりやすいスタイルはあるのだろうけども、個人的にはオススメ出来ない。)
流し読み程度でも入門書を一度読めば (細かい借用規則を覚えていなくても) iter を使うくらいは出来るよ。
そこから何度でも読んで細かい理解を深めていくんだよ。
892デフォルトの名無しさん
2022/10/04(火) 16:09:22.52ID:Yud6QviI >>889
キチガイは黙っていろ
どんな世界でもそんなに一気に大きく手を広げて学習しようとして上手くいくわけがない
単純に一つずつやっていくのが正しい
collectなんて後で困らん
そもそもイテレータ使わなきゃcollectは出て来ない
ぶっ飛んだことを書き込んでいることを自覚しろ
キチガイは黙っていろ
どんな世界でもそんなに一気に大きく手を広げて学習しようとして上手くいくわけがない
単純に一つずつやっていくのが正しい
collectなんて後で困らん
そもそもイテレータ使わなきゃcollectは出て来ない
ぶっ飛んだことを書き込んでいることを自覚しろ
893デフォルトの名無しさん
2022/10/04(火) 16:10:09.70ID:froE0MIe これがいつもの複オジ演w
894デフォルトの名無しさん
2022/10/04(火) 16:15:28.56ID:Qrm8xufh >>889
collectを使わなくてもプログラムを書けるから少しずつ学習していく方法でも支障はないし
collectを一旦は魔術だとみなして仕組みの詳細まで把握せずに利用して進めていく学習方法でも支障はないし
FromIteratorなんてあとから学べば十分ですよ
collectを使わなくてもプログラムを書けるから少しずつ学習していく方法でも支障はないし
collectを一旦は魔術だとみなして仕組みの詳細まで把握せずに利用して進めていく学習方法でも支障はないし
FromIteratorなんてあとから学べば十分ですよ
895デフォルトの名無しさん
2022/10/04(火) 16:17:47.88ID:zVqHX6VA いやcollectをここまで安全かつ効率よく実装してる言語はないのにそれを使わないのは論外
896デフォルトの名無しさん
2022/10/04(火) 16:19:54.90ID:zVqHX6VA 戦国時代に例えるならここに名刀があります
ワタクシは未熟だからこの刀は使いませんと言って
戦に出て殺されるみたいな話
その名刀を最初から使えるように訓練すべき
ワタクシは未熟だからこの刀は使いませんと言って
戦に出て殺されるみたいな話
その名刀を最初から使えるように訓練すべき
897デフォルトの名無しさん
2022/10/04(火) 16:20:34.14ID:QGiHkjYG 馬鹿じゃねぇの
898デフォルトの名無しさん
2022/10/04(火) 16:26:15.56ID:Qrm8xufh >>895
使いたいならば使えばよいだけですよ
初心者がFromIteratorの仕組みまで理解しないとcollectを使っちゃいけないのですか?
この場合の『部分的に学習』とはcollectの機能の一部をまずは表層的にのみ理解して使ってみることです
そしてこの『部分的に学習』は可能です
使いたいならば使えばよいだけですよ
初心者がFromIteratorの仕組みまで理解しないとcollectを使っちゃいけないのですか?
この場合の『部分的に学習』とはcollectの機能の一部をまずは表層的にのみ理解して使ってみることです
そしてこの『部分的に学習』は可能です
899デフォルトの名無しさん
2022/10/04(火) 16:29:20.57ID:BXFwwNrI 隔離スレに帰れ
900デフォルトの名無しさん
2022/10/04(火) 16:29:25.15ID:zVqHX6VA いやだから「表層的な学習」だとコンパイルすら通せないんだって
901デフォルトの名無しさん
2022/10/04(火) 16:31:30.86ID:zVqHX6VA 何度も言ってるけどRustはコンパイルを通せば
意図してないエラーはまず起きないし
Nullで落ちるなんてこともない
意図してないエラーはまず起きないし
Nullで落ちるなんてこともない
902デフォルトの名無しさん
2022/10/04(火) 16:35:17.34ID:vFqvnIUB903デフォルトの名無しさん
2022/10/04(火) 17:00:26.62ID:zVqHX6VA 「段階的学習」というのは数学や物理においては成立する言葉だがプログラミングにおいては成立しない
なぜなら「知識の差」が普遍的に影響を受けてしまうから
例えば数学では代数学の理論を知らなくても初等整数論は学べるがプログラミングではそのようなことはないとわかる
なぜなら「知識の差」が普遍的に影響を受けてしまうから
例えば数学では代数学の理論を知らなくても初等整数論は学べるがプログラミングではそのようなことはないとわかる
904デフォルトの名無しさん
2022/10/04(火) 17:01:28.47ID:zVqHX6VA 例えばアルゴリズムの問題もそう
「知らない」ことが致命的になり得る
「知らない」ことが致命的になり得る
905デフォルトの名無しさん
2022/10/04(火) 17:06:11.40ID:zVqHX6VA collectを知らないものが自前でfor文で同じことを実装していたらどうなるだろうか?
レビューで指摘され赤っ恥を書かされてプライドはズタズタ
それが原因で鬱になるかもしれん
さらにパフォーマンス悪くなる
精神的にも肉体的にもダメージを負うことになる
レビューで指摘され赤っ恥を書かされてプライドはズタズタ
それが原因で鬱になるかもしれん
さらにパフォーマンス悪くなる
精神的にも肉体的にもダメージを負うことになる
906デフォルトの名無しさん
2022/10/04(火) 17:18:30.46ID:vFqvnIUB907デフォルトの名無しさん
2022/10/04(火) 17:46:08.51ID:5flxOiHV 段階的学習って↓を読み進めればいいだけじゃないの?
https://doc.rust-jp.rs/book-ja/
https://doc.rust-jp.rs/book-ja/
908デフォルトの名無しさん
2022/10/04(火) 18:05:45.53ID:qunzxQTR909デフォルトの名無しさん
2022/10/04(火) 18:41:19.07ID:NDareeYW この複オジ演パターンはもうみんな気づいてるよね
910デフォルトの名無しさん
2022/10/04(火) 18:43:17.38ID:ye813FXw 赤い人をNGしときゃいいやん
911デフォルトの名無しさん
2022/10/04(火) 19:01:55.07ID:7zYgBA5I912デフォルトの名無しさん
2022/10/04(火) 19:07:38.54ID:gMN5eNCr >>891
さすが餃子さん分かってらっしゃる
最初は大まかな理解→もう少し詳細な理解→最後に完璧な理解という解像度の段階的な学習を中心に
項目や範囲を広げていく網羅度の段階的な学習を組み合わせることでRustの学習を含めて一般的な事柄にも適用できる
さすが餃子さん分かってらっしゃる
最初は大まかな理解→もう少し詳細な理解→最後に完璧な理解という解像度の段階的な学習を中心に
項目や範囲を広げていく網羅度の段階的な学習を組み合わせることでRustの学習を含めて一般的な事柄にも適用できる
913はちみつ餃子 ◆8X2XSCHEME
2022/10/04(火) 20:17:29.13ID:P4nmisNi >>911
そこで言ってる「初心者」は「Rust の初心者」ではなく「プログラミングの初心者」の意味?
そうだとすると the book はちょっとハードルが高いということはあるかもしれんな。
でも C++ と比較すると C++ のほうがもっとハードルが高いと思う。
コンパイラが検出しないところで未定義に入り込むことがあまりに多い。
初心者が間違うのは当然のことだが、正しいのか間違っているのかわからないというのは間違っていることが明白であるよりもしんどい。
そこで間違ったまま邁進できるようなメンタルの持ち主はそれはそれで遠からず行き詰るし。
そこで言ってる「初心者」は「Rust の初心者」ではなく「プログラミングの初心者」の意味?
そうだとすると the book はちょっとハードルが高いということはあるかもしれんな。
でも C++ と比較すると C++ のほうがもっとハードルが高いと思う。
コンパイラが検出しないところで未定義に入り込むことがあまりに多い。
初心者が間違うのは当然のことだが、正しいのか間違っているのかわからないというのは間違っていることが明白であるよりもしんどい。
そこで間違ったまま邁進できるようなメンタルの持ち主はそれはそれで遠からず行き詰るし。
914デフォルトの名無しさん
2022/10/04(火) 20:27:55.40ID:9Mq2x6bG915デフォルトの名無しさん
2022/10/04(火) 20:36:11.60ID:pQmQIrKs916デフォルトの名無しさん
2022/10/04(火) 21:10:32.92ID:d7kGndGU 所有権も借用も生存期間も理解してなければ
メソッド呼び出し一つ満足にできないんだから
それら無しに動くものが作れるわけない
学習自体は言語に限らずどんな学習でも部分的段階的にやるもの
それ以外の方法なんてないんだから論点ずれてる
メソッド呼び出し一つ満足にできないんだから
それら無しに動くものが作れるわけない
学習自体は言語に限らずどんな学習でも部分的段階的にやるもの
それ以外の方法なんてないんだから論点ずれてる
917デフォルトの名無しさん
2022/10/04(火) 22:06:44.90ID:GBsxPWRL918デフォルトの名無しさん
2022/10/04(火) 23:03:40.79ID:HL14YOAo >>917
所有権も知らずにイキってた人はさすがに言う事が違うねぇww
所有権も知らずにイキってた人はさすがに言う事が違うねぇww
919デフォルトの名無しさん
2022/10/04(火) 23:58:47.13ID:vxOZn4OH 数値型って所有権がっつり関係してると思うけど
920デフォルトの名無しさん
2022/10/05(水) 00:06:13.80ID:SE95U4Vu >>919
数値型はCopyを実装しているので所有権は無くムーブも起きない
数値型はCopyを実装しているので所有権は無くムーブも起きない
921デフォルトの名無しさん
2022/10/05(水) 02:07:12.38ID:1K+My+/e 数値型だけで>>867の言う「動くもの」を作ってみれば?
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- アメリカ議会 「中国が台湾武力侵攻する準備を急速進展中」 ★3 [お断り★]
- 外国人の犯罪率は日本人の1.72倍 警察庁が短期滞在者除いた数字を参院内閣委で答弁 [七波羅探題★]
- 【高市自民】中国軍SNS 高市首相に怖すぎる地獄絵で警告、火の海の靖国神社「自ら墓穴を掘り、戻れない道へ進む」 [夜のけいちゃん★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★9 [樽悶★]
- 「ドラゴンボール」初の全世界キャラクター人気投票が開幕!212キャラからナンバーワンが決まる!! [ひかり★]
- 【速報】公然わいせつの疑いで逮捕・送検・略式起訴のAぇ! group 草間リチャード敬太メンバー 脱退を発表 「心の病の療養」に専念 [Ailuropoda melanoleuca★]
- 【憲法改正】起草委員会、設置へ [476729448]
- 3K新聞「高市首相「馬車馬」の1カ月…宿舎で猛勉強、外交乗り切る 会食なく睡眠不足、心配の声も」 [834922174]
- 【35🌸専】なんG さくらみこ桃鉄配信実況スレ🏡【ホロライブ▶】
- 真面目な話、支那はもう台湾侵攻寸前なんだろ。高市さんはあえて言ったんじゃないか [308389511]
- 【画像】チョコプラのYoutubeチャンネル、コメント欄がとんでもないことになるwwwwwwwww
- 皆で雑談しよーや
