[過去ログ] Rust part24 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
142: デフォルトの名無しさん [sage] 2024/06/15(土) 06:54:41.07 ID:FwUehUa7(1) AAS
>>138それらは書き直されてもunsafeばっかになって意味ないだろ
206: デフォルトの名無しさん [sage] 2024/06/16(日) 12:51:16.07 ID:G6A3UH2o(1) AAS
>>205代入と考えるよりもパターンマッチングと考えるといいかな
=や引数などで複雑なパターンを書いてもマッチングしてくれるよ
それがたまたま1対1の時が昔からの代入に相当してマッチングして移動
232: デフォルトの名無しさん [] 2024/06/17(月) 06:58:24.07 ID:Yz55GwEO(1) AAS
【マイクロ波センサー】長距離でも壁があっても動きを検出!
↓2010年ごろには完成
高齢化社会を支える“見守りシステム”の開発に成功-カギを握った半導体ソリューションとは
↓2026年ごろにさらに性能工場
旭化成、ミリ波・マイクロ波帯の空洞共振器による微小金属検査システムを開発
男女関係なく陰部を撮影
一度でも盗撮されていれば正確な色合いの・・・
初期型は赤外線センサー【自動ドアのセンサなど】
子どもが言語を獲得していくのと同じようにAIモデルに学習させることに成功
AIを使って「赤外線カメラ画像のフルカラー化」に成功!
世界中で横行
357: デフォルトの名無しさん [sage] 2024/06/25(火) 11:48:25.07 ID:EN7MeMPi(1/3) AAS
C++ を知っていると Rust がわかりやすいというよりも有難みを感じやすいとは思う。
なんだかんだで Rust は面倒くさいしそれなりに学習曲線の急上昇もあるのは本当だけど、
それでもなお Rust が良いと思えるのは C++ の駄目な部分についての反省が入ってるから。
C++ 的なものが必要な場面で C++ より上手くやるものという感覚で捉えてる。
375: デフォルトの名無しさん [sage] 2024/06/26(水) 12:30:12.07 ID:j6fp+f8B(1/3) AAS
>>372372(2): デフォルトの名無しさん [sage] 2024/06/25(火) 23:30:51.26 ID:oKw2Pfcc(1) AAS
>>347
展開しないほうがよい
展開する時も二重ループは発生するだけでなく単なる計算より重い
さらに本来は回避できる浮動小数点を使わざるを得なくなる
そして>>342のコードをその例のような静的ではなく問題入力値に応じて動的に作り出さなければならない
一方で展開しないならばRustコード数行だけで済み任意の問題に対応できる
割り算部分も0/N=0かN/N=1だけなので整数で済む
>割り算部分も0/N=0かN/N=1だけなので整数で済む
そうだね
この問題の本質はそこだと思うけどそれ言い出すとif使わない理由が無いな
477(1): デフォルトの名無しさん [sage] 2024/06/29(土) 17:06:14.07 ID:HTwQ17U9(1) AAS
>>474474(3): デフォルトの名無しさん [sage] 2024/06/29(土) 16:52:22.95 ID:KH8yb7Br(2/6) AAS
>>471
「ライフタイム注釈が'aになるか'_になるか省略できるか」は、すべての使用箇所ごとに以下を検討したうえで決まる
* 追加するライフタイムは既存のライフタイムと同じであるべきか
* 既存と同じであるべきでないなら、そのライフタイムはどこで宣言すべきか(impl? fn? トレイトや構造体?)
それで1つの型がリファクタリングできたところで、
* トレイトや構造体にジェネリックライフタイムパラメータを追加した場合、そいつにも同じ作業がいる。最初から繰り返し
ここまでのすべての作業に尋常でない集中力が必要になる
繰り返しの中でライフタイムの宣言箇所の選択が誤っていたことに後で気づいたりすると悲惨だ
「エラーのあるコードをgit commitしない方が良い」という思い込みを捨て、選択を必要とするタイミングでgitに記録するようにして、
作業効率は安定はするようになったが、それでも作業を捨てるというのは気が滅入る
「あ、この関数の引数にライフタイム追加することになるけど、後で戻り値にもライフタイム追加することになるな」なんて思っても一挙に作業してはいけない
少なくとも自分の頭では作業の段取りを崩すだけだった
そしてここまでを全集中して完了してコンパイルを通すところまで持って行けても、クレート外の使用箇所でおかしなことにならないことは保証できない
ボローチェッカーは書かれている使用法が妥当であるかどうかしか検証しないからだ
こっちは体験談として言っているんだから、机上の空論を弄するのはもうやめなさい
>>475475(1): デフォルトの名無しさん [sage] 2024/06/29(土) 16:58:20.78 ID:KH8yb7Br(3/6) AAS
Rustはライフタイムさえ正しく書けていれば本当に有用な助けを与えてくれる
しかしライフタイムを正しく書くための助けはほとんど与えてくれないので、自分で書く必要があるときには上と同じような期待をしてはいけない
それは大きな誤解をしているなあ
ライフタイムアノテーションを間違って書いて矛盾が起きていればコンパイルエラーとなるよ
コンパイルが通れば正しく書けているからプログラマーがそこで困ることはないよ
493(2): デフォルトの名無しさん [] 2024/06/30(日) 05:54:25.07 ID:WATrci3L(1/4) AAS
>>309309(1): デフォルトの名無しさん [sage] 2024/06/22(土) 23:41:03.46 ID:jxx0duBQ(1) AAS
関数型というとfor文使うのではなくこんなイメージ
fn main() {
std::env::args().skip(1).for_each(|file_name| {
println!("{}", file_name);
std::fs::read_to_string(&file_name).map(|lines| {
lines.lines().enumerate().for_each(|(i, line)| {
println!("{:>2}:{}", i + 1, line);
})
})
})
}
横からすみません。
C#を関数型っぽく書いたら、ここまではなったのでRustだったらどうなるのか聞いても良いでしょうか?
public static void Main(string[] args) { args.ToList().ForEach(f); }
static void f(string fileName)
{
Console.WriteLine(fileName);
File.ReadAllLines(fileName).Select(g).ToList().ForEach(Console.WriteLine);
}
static Func<string,int,string> g = (line,i) => $"{i + 1,2}:{line}";
536: デフォルトの名無しさん [sage] 2024/07/01(月) 14:05:59.07 ID:/HpLpXor(1) AAS
Rust 1.0からまだ10年経っていない
Rustは3年毎のedition制度があって後方互換性がない変化はeditionが変わるため安心
今も最初のRust 2015 editionがサポートされてる
さらにedition移行支援ツールもある
Rustは他言語と比べてかなり恵まれてる良い環境
550: デフォルトの名無しさん [sage] 2024/07/01(月) 20:45:22.07 ID:WAZyoaEd(4/4) AAS
自作した後の自己肯定を10年続けるまでがプログラム技術
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.043s