Rust part29

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2025/05/03(土) 00:47:30.13ID:phVJ5tWC
公式
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 part28
https://mevius.5ch.net/test/read.cgi/tech/1742805420/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
2025/05/05(月) 12:10:05.78ID:aemkUy0l
まともな人が言ったのか人形が言ったのか全然わからない時代だ
人形が言ったにすぎないなら、そんな言葉は存在しないのと同じ
2025/05/05(月) 12:14:04.97ID:jqQPAhm/
>>172
お前はわざと議論のための議論してるだけだろ
通常のコーティングで出てくるであろう例を誤魔化している
2025/05/05(月) 12:16:46.89ID:jqQPAhm/
p[ i+0 ],p[ i+1 ],p[i +2 ]を取り出すだけのためにどれだけコーディング量を増やして
ライブラリ依存させていくのか
本当に意味不明
2025/05/05(月) 12:33:03.95ID:upfK5ln+
>>175
そんな可読性が悪くてミスしやすいプログラミングは避けるべきだ
構造化と抽象化が不得手でプログラマやエンジニアに向いてないな
serdeは構造体に#[derive(Serialize, Deserialize)]など付加するだけでデシリアライズ関数などは自動生成される
2025/05/05(月) 12:57:25.54ID:jqQPAhm/
>>176
構造体にって自分で書いてるだろ
単なるバイト列からp[ i+0 ],p[ i+1 ],p[i +2 ]を取り出すだけのために構造体などを作らないといけない
178デフォルトの名無しさん
垢版 |
2025/05/05(月) 13:06:55.72ID:Q0EqhiJQ
p[ i+0/*0=赤*/ ],p[ i+1/*1=緑*/ ],p[i +2/*2=青*/ ]
俺ならこうするよ
コメントを見れば0が赤、1が緑、2が青と見たん瞬間わかる
日本語なので英語より間違えにくい
もし間違った数字が間違ってたらコメントと比べればすぐわかる
2025/05/05(月) 14:25:06.41ID:aemkUy0l
(言語を強化することにより)アプリのコーディング量を減らせという話はなかなか面白い
言語の数がアプリの数より多い気がする原因はこれかもしれない
180デフォルトの名無しさん
垢版 |
2025/05/05(月) 15:35:05.95ID:4XowqzeV
>>174
議論のための議論をしてるのはお前だろ
それともガチで何も意味を読み取れないインデックスアクセスが正義と思ってるわけ?
どんなみじめな経験を積んできたんだよ
害悪プログラマすぎて仕事で関わらないことを願うわ
181デフォルトの名無しさん
垢版 |
2025/05/05(月) 15:41:59.59ID:AjenNrLi
議論とは関係ないけど大体の画像処理ライブラリだとRGBもBGRも扱えるように channel[0], channel[1], channel[2] のようにアクセスさせると思う
内部のデータによって channel 数は1や4 (アルファチャネル付き) もあるし
182デフォルトの名無しさん
垢版 |
2025/05/05(月) 16:02:16.97ID:Q0EqhiJQ
仕事はお金を貰ってやることだから丁寧に書いて上司に褒められる必要があるけれど
趣味とか経営者とかなら何を書いてもじゆうなんだよな
183デフォルトの名無しさん
垢版 |
2025/05/05(月) 16:11:32.03ID:Q0EqhiJQ
簡潔で見にくいコードを書くか
冗長で醜いコードを書くか
2択だな
2025/05/05(月) 16:35:32.16ID:0Pl94lQ7
>>181
これはそう
画像に限らず構造化されたバイナリデータを扱うときに一般に言えることだけど、
単純にビット列をそのまま構造体として読み替える間違いは、低水準に踏み込める言語に入門して調子乗ってる初心者がやりがち
2025/05/05(月) 16:47:29.64ID:aemkUy0l
上司はunsafeの箇所をチェックすればいいのに
コンパイラが自動で調べてエラーがなかった箇所を、手動で調べ直して逆張りするのが胡散臭い
2025/05/05(月) 18:15:43.01ID:fQ8xBj6s
Serdeは暗黙のCopyしがち
2025/05/05(月) 18:29:47.69ID:jqQPAhm/
>>180
80代のおじいさんと仕事をする機会はないかな
2025/05/05(月) 22:23:21.43ID:I4eA7HrP
話を整理すると

>>82
>> .G(p[0]).R(p[1]).B(p[2]).build()
>> のところを容易に
>> .R(p[0]).G(p[1]).B(p[2]).build()と間違え

と彼は言い出すから
それは名前付けせずにp[0]を用いていることが間違える本質的な問題という話だよな
2025/05/05(月) 22:25:33.48ID:I4eA7HrP
さらに

>>160
> RGB各値は指定が必須とは限らない
> defaltで各値が0指定されていて同じなら書く必要がない

と彼は言ってるので
彼の好み通りにp[0]を用いるとして

名前付きオプション引数方式
foo(
 green = p[0],
 blue = p[2],
)

ビルダーメソッド方式
foo()
 .green(p[0])
 .blue(p2])

どちらの方式でも同じだな
仮にミスが起きるとしたらそれは名前を付けずにp[0]を使っていることが本質的な問題であると確定
2025/05/05(月) 22:47:31.22ID:fQ8xBj6s
構造体は
foo{green:green,blue:blue}

foo{green,blue}
と描ける訳で
ビルダーメソッド方式とやらも
foo().green().blue()
的に描ければ無駄が減るから改良してくれんかのぅ
2025/05/05(月) 23:13:19.16ID:If8Py5os
>>189
その大量連投していた彼はRustをほぼ知らないと判明した上に他の言語の経験値も低そうなので彼自身に問題があることを理解できないと思う
2025/05/05(月) 23:39:40.43ID:Cn3HeiMA
その連投してスレを荒らしていた人が
「おじ」「複おじ」「おじいさん」「おじいちゃん」使いの人だったとはね
>>61 >>70
193デフォルトの名無しさん
垢版 |
2025/05/05(月) 23:42:50.66ID:fQ8xBj6s
foo().(green).(blue)
でもいいな
2025/05/05(月) 23:55:27.76ID:hXT/3Bxe
RustはJavaよりも構造体リテラルの表記が強力だから
Builder使うよりOptions構造体1つで渡す方が楽かもしれんね
パターンとしてはBuilderよりマイナーだけど
2025/05/05(月) 23:58:49.46ID:+Xl4Ck1b
>>190
引数なしで何を指定するのか?

>>193
メソッド名なしはエラー

どんな方式を取ろうとも大元の変数(ex. rgbやp)は指定せざるをえない
foo().green(rgb).blue(rgb)
2025/05/06(火) 09:36:09.23ID:sXCqetJD
>オプション引数やキーワード引数については他言語が内部的にやってることをRustの場合は開発者が自分でやらなきゃいけないことになっててバカらしい

>しかも関数シグニチャに情報をまとめられないから書く方も読む方も煩雑になるだけで開発者的には何もメリットがない

これに尽きる
言語に機能が不足してるから何でもかんでもビルダーパターンにしなきゃいけなくてサードパーティのマクロに依存することになる
アホらし
2025/05/06(火) 09:48:17.91ID:j5CJU7Aq
>>196
真逆だろ
キーワード付オプション引数をズラズラ並べた長い長い関数シグニチャはデメリットしかない欠陥品
しかも機能拡張したらさらにキーワード付オプション引数が増えて関数シグニチャが変わるアホらしさ
2025/05/06(火) 09:51:10.91ID:HDXWn70Z
複数IDと口調を使い分けて自分のレスに賛成するキチガイが複おじ
199デフォルトの名無しさん
垢版 |
2025/05/06(火) 09:51:38.50ID:K1Pjz07i
Rustのダサい処は認めるべき
2025/05/06(火) 09:56:28.46ID:HDXWn70Z
>>197
ビルダーパターンは30年以上前から知られていたけどあまり有用ではないので使われていない
過去に誰かがざっくりデザインパターンを否定してたけど、その人の言うにはデザインパターンで有用なものは言語自体に取り込まれるはずだと

実際いくつかは新しい言語では取り込まれている
2025/05/06(火) 09:56:50.79ID:SvTeM3j9
マクロで解決可能なんだろ? それは「不足している」のか?
まあ標準ライブラリとして入っているべきみたいな論はあるかもしれんけど、マクロでの解決が悪くて言語機能として直接サポートするのが良いとする根拠は出てないな。

言語ユーザがそれぞれのやり方で解決できる自由さと言語の方針を強制する一貫性は両立しないがそれぞれに良さはあるし、 Rust は今のところ自由さをとりつつもデファクトな地位のライブラリはあるという状況だ。
手頃な妥協点と言えるだろ。
2025/05/06(火) 10:01:33.47ID:HDXWn70Z
些細な内容なら初期化関数を複数作ればよい話で更に多くなればオプション指定する構造体を作ればよい
mutに拘る必要が無ければさらに多くの可能性がある

わざわざ穴の多いビルダーパターンを使う必要はない
2025/05/06(火) 10:08:26.28ID:SvTeM3j9
>>200
ポールグレアムはイディオム (デザインパターン) は言語機能として持つかライブラリにまとめるべきと述べていて、考えられる様々なパターン (またはこれから登場する未知のパターン) をライブラリにまとめるには「本物のマクロ」が必要と主張してた。
そして本物のマクロを持つ実用的な言語は Common Lisp くらいしかなかったんだが、 Rust のマクロは彼の言う本物のマクロだ。

マクロで抽象化されてるならその実装がビルダーパターンでもそうでなくてもどうでもいいよ。
2025/05/06(火) 10:10:04.33ID:j5CJU7Aq
>>202
初期化関数を複数作るとオプション分の組み合わせ爆発となる一番アホな方式
それならビルダー方式がよい
2025/05/06(火) 10:12:49.15ID:HDXWn70Z
>>204
他の言語では大体オーバーロードでオプション指定しているけどそれが馬鹿だとは思わないけどね
2025/05/06(火) 10:15:57.89ID:j5CJU7Aq
>>205
それはオプションが増えると組み合わせ爆発が起こる馬鹿な方式
2025/05/06(火) 10:17:10.44ID:HDXWn70Z
>>206
同じ主張と文章を繰り返すやり方が複おじそっくりですね

オーバーロードの初期化関数で馬鹿らしいと思うのは型が同じで対象が違うものがある時
重複を避けるためにシグネチャの設計をしなくては成らないことは馬鹿らしいと思うよ

例えば基本的に2つだけ引数があって後はオプションがずらずら並ぶならやはりオプション内容を含む構造体渡せばいいと思う
そちらも設計が必要だけど
2025/05/06(火) 10:18:50.49ID:j5CJU7Aq
>>205
それ以前にオーバーロードは欠陥機能
オーバーロードを使うとred,green,blueのオプション実装すらできない
2025/05/06(火) 10:19:38.79ID:K1Pjz07i
>Rust のマクロは彼の言う本物のマクロ

macro_rules! は偽物のマクロ
proc_macro2 が本物のマクロ
2025/05/06(火) 10:20:41.45ID:HDXWn70Z
普通は書き込み内容が単調にならないように人は文章に揺らぎをいれてくるんだけど
複おじは基本全部同じ

口調を変えても同じなので同一人物なんじゃないかと思って見ていると後で全く同じ書き込みを始めるので同じ人間なんだなと
2025/05/06(火) 10:20:45.54ID:j5CJU7Aq
>>209
どちらも本物だ
衛生マクロの概念すら知らないのか?
2025/05/06(火) 10:20:58.22ID:AZSw2w0R
>>208
何の問題もないと思うが、具体的には?
2025/05/06(火) 10:22:59.33ID:HDXWn70Z
本物のマクロと言う主張は面白い

でライブラリ作成者ではなく一般的なユーザ側が書いてるマクロはどっちなのかと
2025/05/06(火) 10:23:21.48ID:j5CJU7Aq
>>212
オーバーロードの制限を知らないのかね?
red,green,blueそれぞれだけを指定したい関数をオーバーロードで書いてごらん
2025/05/06(火) 10:24:49.05ID:j5CJU7Aq
>>213
衛生的なマクロとは何かを勉強するといいよ
2025/05/06(火) 10:24:50.06ID:HDXWn70Z
オーバーロード自体は良い仕組みだと思うけど設計が必要だ
最近の言語が取り入れていないのはヒューマンエラー対策という名目

だったらビルダーパターンもヒューマンエラー対策で禁止になるかと言えばそうでもない
2025/05/06(火) 10:27:37.75ID:j5CJU7Aq
>>216
オーバーロードは最悪な仕組み
欠陥が多すぎる上に
red,green,blue各オプションしてすら実現できない
2025/05/06(火) 10:28:08.85ID:HDXWn70Z
徐々に文体におじいさんぽさが出てきたね
2025/05/06(火) 10:47:02.68ID:46q0jEJS
AIを屈服させるレベルの改善ができるなら改善してもいいけどね
どうせAIが勝つという前提なら何も修正しないのが合理的だ
2025/05/06(火) 10:51:59.27ID:K1Pjz07i
今のAI()の実力ってこんなもんか
>2つのリンゴを3人で分ける場合、1つのリンゴを2つに切り、もう1つのリンゴも2つに切って、3人で分けます。
>そうすると、3人ともリンゴの切れ目と半分になります。
>具体的な分け方
1. 1つのリンゴを半分に切る:1つのリンゴを真ん中から半分に切り、2つの半分のリンゴにします。
2. もう1つのリンゴも半分に切る:もう1つのリンゴも同じように半分に切り、さらに2つの半分のリンゴにします。
3. リンゴを合計4つの半分に分ける:2つのリンゴを合わせて、全部で4つの半分に切ったリンゴが手に入ります。
4. 3人で分配する:3人でリンゴの半分を1つずつ取ると、3人とも1つずつ取ることができます。
5. 残った1つを3人で分ける:1つの半分に切ったリンゴが残りますが、それを3人で分けることができます。
例えば、さらに半分に切って3人で分けたり、3つの小さく切って3人で分けたりできます。
2025/05/06(火) 10:52:27.53ID:SvTeM3j9
>>209
本物のマクロというのが何であるか明瞭な定義はされてないのだが、文脈的に「構文木の操作が出来る」というのが要件だと一般的に解されている。
トークン単位の置き換えしか出来ない C のマクロのようなものを除外するための言い回しだ。
構文木を操作できるなら操作できる範囲の違いは本物のマクロかどうかには重要ではない。
(もちろん出来ることが多いほうがより良い本物のマクロとは言えるだろうが、出来ることが多いほうが危険な間違いも引き起こしやすいので現実には適度に制限があったほうが良いこともある。)
macro_rules! も普通は本物のマクロと解される。
2025/05/06(火) 11:06:32.44ID:46q0jEJS
リスパーはmatchを知らない

matchを知らなくても理解できるマクロが本物のマクロ
2025/05/06(火) 11:11:44.35ID:HDXWn70Z
複数ID使用おじ

別人が複おじと疑われたら自分は複おじじゃねーよと反論する
気持ち悪いから
ところが何故かしない

複おじはそういうのに反論しない仕組みになっている
2025/05/06(火) 11:19:55.25ID:AZSw2w0R
>>214
ヒント:
struct Red(u8);
2025/05/06(火) 11:20:28.10ID:HDXWn70Z
マクロ自体がただの似たような機能の概念の総称であってその中で本物だ、元祖だと言っても笑われるだけ
キーボードマクロは真のマクロではないとか衛生的ではないと言われてもそうですかと
2025/05/06(火) 11:22:58.43ID:HDXWn70Z
ID:j5CJU7Aq  の反応待ちのawait状態です
2025/05/06(火) 11:23:42.97ID:K1Pjz07i
>>223
複OGはどうでも良いけど
5chはもう禿しく過疎ってるのにこのスレだけやけに延びてるのは不自然だと感じる
2025/05/06(火) 11:31:04.25ID:SvTeM3j9
>>225
「本物のマクロ」というのは正しさとか起源を主張しているわけではなくそういう名前の分類。
少なくとも C のマクロなどでは様々なイディオムを抽象化するには不十分だというごく当然の話をしてる。
2025/05/06(火) 11:33:12.59ID:AZSw2w0R
なお、名前付き引数での呼び出しを前提とするならばhoge(red) と hoge(green)を名前付き引数の引数名だけで呼び分けるオーバーロードは技術的には実装できない理由は特にない
しかし、多くの言語では名前付き引数の使用はオプションだしこの場合はhoge_red(val)のように機械的に名前変えりゃいいだけだから、実装コストに見合わないという判断をされているのだろう
2025/05/06(火) 11:39:56.59ID:ZZS2r6Zz
>>224
こうですか?わかりません

impl From<Red> for Color {...}
impl From<Green> for Color {...}
impl From<Blue> for Color {...}
impl From<(Red, Green)> for Color {...}
impl From<(Red, Blue)> for Color {...}
impl From<(Green, Blue)> for Color {...}
impl From<(Red, Green, Blue)> for Color {...}

let red = Color::from(Red(255));
let yellow = Color::from((Red(255), Green(255)));
let white = Color::from((Red(255), Green(255), Blue(255));
2025/05/06(火) 11:48:34.17ID:46q0jEJS
メリットが不確実なだけでしょ
メリットもコストも確定していてなおかつ見合わないという話ではない
2025/05/06(火) 12:18:40.67ID:0KYdit4+
このスレでずっと自演してる人って糖質とかなんだろうなあ
2025/05/06(火) 12:28:45.22ID:K1Pjz07i
traitで騒いでた自演と同じ人だろう
2025/05/06(火) 12:40:06.43ID:WV2uqB5+
オーバーロードはそもそもCのAPIにありがちな、後で〇〇2だの〇〇exだのが増えて格好悪くなる問題を解消するためのもの
後で引数名だけ異なるオーバーロードが増えたら名前付き引数を使っていない既存の呼び出しがエラーになるのは、互換性維持という本来の目的からすれば論外
2025/05/06(火) 12:49:02.99ID:w/CyTLi+
話題のderive_builderを使ってみた
構造体に属性を付けるだけで初期化関数を書かなくて済むのは便利だね
ドキュメント見ると今回は使ってないけど色々と機能が充実してるみたい
話題のred/green/blueはこれでいいのかな

use derive_builder::Builder;

#[derive(Default, Builder, Debug)]
struct Color {
#[builder(default = "0")]
red: u8,
#[builder(default = "0")]
green: u8,
#[builder(default = "0")]
blue: u8,
}

fn main() {
let pink = ColorBuilder::default().red(255).blue(200).build().unwrap();
println!("{pink:?}"); // Color { red: 255, green: 0, blue: 200 }
}
2025/05/06(火) 12:57:12.48ID:aXFsP9SC
>>235
よくない
散々言われている通り、必須属性の設定を忘れると実行時エラーになるという致命的な問題がある
2025/05/06(火) 13:06:06.15ID:w/CyTLi+
>>236
例えばファイル名を打ち間違えちゃったけど
まずリリースモードの前にデバッグモードの時点で実行時エラーで気付いて
直してしまえばそれ以降は大丈夫と同じじゃないのかな
特に問題ないような
2025/05/06(火) 13:10:03.39ID:w/CyTLi+
補足するとファイル名は必須項目だけど
コンパイル時にチェックできるのは型だけだから現実的にチェックできることはほとんどないよね
2025/05/06(火) 13:16:05.70ID:sXCqetJD
お前らめちゃくちゃ暇人だな
レス多すぎ
2025/05/06(火) 13:18:37.75ID:sXCqetJD
>>201
>マクロで解決可能なんだろ?
ビルダーパターンの手書きコード量を多少なりとも削減したいという問題は解決してるかもね
それが本当に解決したい問題だと思ってるのならそれでいいんじゃない
2025/05/06(火) 13:24:33.64ID:w/CyTLi+
ビルダー方式でも他の方式でもなんでもいいけど
初期化のための関数を自分で書くよりも>>235のように構造体への属性マクロ指定だけにするのがいいと思う
面倒がなくコードがすっきりとしてプログラミングミスも起きないから
2025/05/06(火) 13:44:43.14ID:aXFsP9SC
>>238
それはそうなのだけど、だからといってコンパイル時のチェックを安易に諦めたら、極論Cでいいだろって話になっちゃう
Rustの存在意義が問われる危険な思想
2025/05/06(火) 13:46:48.63ID:ZZS2r6Zz
現時点のderive_builderはFooBuilder::new()に必須項目を渡すパターンには対応してないっぽいな
全部default()でも構わないケースだと使えるけどRegexBuilder::new(pattern)みたいなケースもあるから万能ではない
2025/05/06(火) 13:53:00.39ID:K1Pjz07i
良い例があるな
https://mevius.5ch.net/test/read.cgi/tech/1643696741/33
貴方が配慮を欠いている
そのx^nつまりxのn乗を求めるにしても
例えば2^100を求めたいならば128bitがないと溢れるのでu128::pow(2, 100)となるが
2^5を求めたいだけで結果も8bitで十分ならばu8::pow(2, 5)となる
このようにメモリサイズも異なってくるので別々の関数が必要
もちろんu128::pow(x, n)があればu8::(x, n)をカバーできるが明らかに無駄である
そこで符号なし整数だけでも
u8::pow(x, n)
u16::pow(x, n)
u32::pow(x, n)
u64::pow(x, n)
u128::pow(x, n)
と5つの関数が必要となる
一方でxの型が確定しているのであればpowで再び型指定は不要なので
x.pow(n)と表記することも可能
以上は整数の場合だがxとpowの結果が小数の場合は2種類の関数が必要となる
f32::powi(x, n) 【nが整数の場合】
f32::powf(x, n) 【nも小数の場合】
もちろんnが小数のpowfだけあればpowiもカバーできるが明らかに無駄なので2種類必要となる
さらに32bit小数だけでなく64bit小数も扱う必要があるため以下も必要
f64::powi(x, n) 【nが整数の場合】
f64::powf(x, n) 【nも小数の場合】
これらもxの型が確定していれば以下のように略して書くことも可能
x.powi(n) 【nが整数の場合】
x.powf(n) 【nも小数の場合】
ちなみに「x^n」を表記するのに不自然な「pow(x, n)」よりも「x.pow(n)」の方がたまたま自然に見えるが誤差だろう
どちらでも好きな表記法を選べばよいだけにすぎない
2025/05/06(火) 14:21:46.28ID:97zxA3f+
>>244
例えば
このように
もちろん
そこで
一方で
以上は
もちろん
さらに
これらも
ちなみに


そのx から始まって論理的?接続で参照を握ったままで最後まで離さないな
読みにくいのは当然
2025/05/06(火) 14:26:52.22ID:97zxA3f+
id変わってしまった
2025/05/06(火) 14:30:10.65ID:97zxA3f+
上の強烈な接続もビルダーパターンの一種かな?と思ってしまう
2025/05/06(火) 15:04:10.81ID:46q0jEJS
>>242
忠臣蔵みたいに、諦めたふりをするぐらいがちょうどいい
危険思想?
なんのことやら
2025/05/07(水) 00:06:42.37ID:oRVzsgHT
>>245
複おじ語録よくぞまとめてくれたな
ほめてつかわす
2025/05/07(水) 10:19:22.81ID:0n7pwB6u
後から〇〇2や〇〇exが増える問題ってRustだとどう対処するのが一般的なんだろう
まあRustの場合ABIを維持する必要のあるケースは比較的限られてるけど、引数増やしたら既存のソースは壊れるよね
最初から構造体にしておけというのは意味のない意見なので無しで
2025/05/07(水) 10:32:45.05ID:Gjm+c4fd
普通に関数が増える
2025/05/07(水) 10:59:58.84ID:jrPMMEx+
>>250
ダイナミックリンクで提供する場合はバイナリ互換性が必要な場面も多いのは Rust でも変わらないよ。
言語の文化としてはスタティックリンクを使いがちではあるけど。
ダイナミックリンクは OS の機能なので言語の側からどうにか出来る余地も少ないし、 OS の文化に乗っかるしかない。
2025/05/07(水) 11:36:16.32ID:hcgUqjSt
○○exがある言語でJVMを実装し、○○exに依存してないと主張する
2025/05/07(水) 13:51:32.15ID:nPKhYJKb
Ubuntu 25.10から、sudoがsudo-rsに置き換わるそうだ
2025/05/07(水) 14:09:26.72ID:jrPMMEx+
まあ Rust が良いかどうかはともかくたまには刷新したほうがええやろ。
2025/05/07(水) 14:24:28.93ID:4cRsIVof
いや、sudoのようなパフォーマンスが重要でないコマンドなら
RustではなくGoで書くべきだった
2025/05/07(水) 14:25:34.83ID:iQ9Crc5o
どんなものでも機能も速さも同じだとしても
C/C++製よりRust製を選ぶわ
C/C++のせいでのセキュリティホールが後からいくらでも見つかってる現状
2025/05/07(水) 14:27:05.51ID:iQ9Crc5o
>>256
余分なランタイムが必要なGoはありえない
2025/05/07(水) 14:50:13.61ID:sBD46f0F
>>250
外部ライブラリならメジャーバージョン増やして普通に破壊する
旧バージョンのAPIをcompatモジュールとかに入れとけば親切

標準ライブラリはエディションで切り替える形になりそう
std::preludeのサブモジュール名は最初v1だったけど今はrust_20XXに方針転換してる
グローバルな名前の追加も一種の破壊だし
260デフォルトの名無しさん
垢版 |
2025/05/07(水) 15:20:58.49ID:7aByWlek
下記は全て2025年5月7日の記事

OpenAI、ChatGPTの6つのモデルの違いと適切なプロンプトを解説
https://news.mynavi.jp/techplus/article/20250507-3275757/

Microsoftの新規のソースコードの約3割をAIが生成、Nadella氏が明かす
https://news.mynavi.jp/techplus/article/20250507-3271749/

スコットランドの住民を悩ます謎の怪音「ヘブリディアン・ハム」の正体はいまだ不明
https://karapaia.com/archives/507130.html
2025/05/07(水) 18:35:48.88ID:hcgUqjSt
モダンなライブラリはdeprecateしやすいのか
古いCと最新のRustだけが残されて中途半端な時代は無かったことになりそうだ
2025/05/07(水) 19:03:14.70ID:3Nv7PA1l
いや、利用者が少ないうちに直しとけ心理で、どんな技術も通る道だよ
sudo-rsがいい例だがこういう長期間にわたって重要な役割を果たす、かつあまり変更が必要とされない用途が増えてくると、だんだんと進化は遅くなるものだ
2025/05/07(水) 19:08:29.35ID:Ja3pQWVu
>>257

(´・ω・)マジ?
2025/05/07(水) 22:26:25.21ID:LUGJMjLo
>>254
この国際的なプロジェクトでセキュリティ的に重要なものから順にRust化されていく一環だよ

Memory Safety for the Internet's most critical infrastructure
https://www.memorysafety.org/
2025/05/08(木) 09:08:51.16ID:8ptxnmrn
>>244-245
このように.drop();
もちろん.drop();
そこで.drop();
一方で.drop();
以上は.drop();
もちろん.drop();
さらに.drop();
これらも.drop();
ちなみに.drop();
2025/05/08(木) 09:25:34.07ID:xZxJToWs
ubuntuはsudoだけでなく、cp, ls, find, diff なんかもRust化する予定なんだな
ntpdもRust化が進められてる
2025/05/08(木) 09:33:12.04ID:n2pO1y9P
>>265
error[E0040]: explicit use of destructor method
help: consider using `drop` function

参考:https://doc.rust-lang.org/error_codes/E0040.html
2025/05/08(木) 10:28:22.03ID:1mgB1EfY
>>266
Ubuntuに限らず誰もが全てをC/C++製から安全なRust製へ変えたいと思っているが一気には無理なので重要なものや新たなものからRust採用という感じ
2025/05/08(木) 12:25:36.55ID:d06WSi70
全てを変えたい、とかいうビジョンは無意味
意味のないビジョンだよ
2025/05/08(木) 12:38:14.55ID:jIG0GCL4
安全でないC/C++を早く全廃したい世界の流れ
2025/05/08(木) 12:49:37.23ID:iRreO2Ee
Linuxコマンド開発専用言語Rust
2025/05/08(木) 12:51:53.54ID:Crcrgp42
メンテナ高齢化問題の対策としては良い取り組みなんじゃないかな
作業するのもインターンの学生が中心だろうし
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況