[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/01 05:53 / Filesize : 267 KB / Number-of Response : 1023
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Rust part10



1 名前:デフォルトの名無しさん mailto:sage [2021/04/02(金) 21:38:04.11 ID:L7IeSfpL.net]
Mozilla発のRust言語のスレ

公式
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 part9
https://mevius.5ch.net/test/read.cgi/tech/1598112455/

301 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 13:38:30.57 ID:rtrHqrCb.net]
>>296
横から失礼するけど、なるほど。
let &c = b;
は、C++の
int &c = b;
とはかなり違った解釈をされてしまうんだね。後者の場合、&は参照型の
記号で、cの型は、intへの参照型になる。Rustで似たことをしたいなら、
let c:&i32 = &b;
だったっけ?

302 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 13:41:33.98 ID:C031ZmfT.net]
String::fromとString::newの使い分けを教えてください

303 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 15:13:55.60 ID:3Jdhcm8q.net]
>>297
cも参照にしたいなら単純に
let c = b;
でいいはず

let &c = b;

let (x, y) = (1, 2);
と似たような代入式だからbが参照型(かつ被参照型がCopy可能)じゃないと
コンパイルできない

>>298
String::newは引数取らないで空文字列を作る
String::fromは引数に文字とか文字列を取って同じ内容の文字列を作る

リファレンス(↓)読みなさいと言いたいけどRustのリファレンスって
traitとか理解しないとなかなか読みこなせないよね
_ttps://doc.rust-lang.org/std/string/struct.String.html

304 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 15:19:02.60 ID:yYRREqIx.net]
>>297
>let c:&i32 = &b;

>>295の続きならbがすでに&i32なので
let c = b; か
let c: &i32 = b;

C++でもStroustrupに従ってint& c = b;と書いとけば同じ意味にとれなくもない

305 名前:デフォルトの名無しさん [2021/04/25(日) 15:31:18.79 ID:2bakgkUg.net]
意図もわからずなんとなく動くからそのメソッドを使い、借用をつければなんとなく動くから
借用し、変更する予定はないけどmutし、ここはエラーだからとpanic!し、補足するなと言われているのに
catch_unwind/recoverして、血の涙で泣きながら渡されたソースをシコシコ直すおまいら・・・

306 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 16:19:28.48 ID:S2tV53BX.net]
>>299 >>300
なるほど、Rustでの b は、C++で言えば「参照」ではなく「ポインタ」の「ようなもの」に
なっているので、
let a = 10;
let b = &a;
の状態だと、
let c = b; か
let c: &i32 = b; か
let c: &i32 = &a;
で c を b と同じような「Rustでの参照型」の変数に出来るわけね?

307 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 16:55:56.06 ID:S2tV53BX.net]
>>302
C++で書き直すと、
int a = 10;
int *b = &a;
の状態だと、
int *c = b; か
int *c = &a;
で c を b と同じような「C++のポインタ型」の変数になる。
ということだね。

308 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 17:24:01.78 ID:Ef2Yns/P.net]
>>301
割とこの未来はもう始まってるんだよな。。rust書き逃げは結構ある。。

309 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 17:25:49.32 ID:vrxr0D/D.net]
悪用できない道具など無い



310 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 17:30:22.71 ID:VydP0zWV.net]
構造体があるじゃん
a.b.cの更新参照もってて
同時に
a.b.dの更新参照とって
両方更新しようしたら
aの更新参照が2箇所にあることになるからできないの?

使い物にならんくない?

311 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 17:40:32.44 ID:M4WxeD2J.net]
>>296
なるほど

match式と同じ様に振る舞うのね

312 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 17:58:15.33 ID:In1fvQYU.net]
>>306
更新参照ってのが&mutのことならできる時とできない時がある

同じ関数内で &mut a.b.c と&mut a.b.d を取ることはできるけど
&mut a.b をとって &mut a.b.d を返す関数を呼び出した後は a.b.d にアクセスできない
これは関数呼び出し時点で a.b が borrow されると判断されるため

このあたりを何とかしようとする 議論は昔からあるけど特に進展なし
https://github.com/rust-lang/rfcs/issues/1215

実用的にはデータ構造の設計を見直すか、RefCell でくるむのが良いと思う
後者は &a.b をとって RefMut を返す関数にするってことね

313 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 18:57:01.34 ID:1PPsE ]
[ここ壊れてます]

314 名前:J27.net mailto: 文字列についてなんかわかりにくいのだけど
C++に例えると
strはchar a[len]
Stringはstruct String { long len; char* str;}
&strはchar* str=&a[2]
このイメージで問題なし?
[]
[ここ壊れてます]

315 名前:デフォルトの名無しさん [2021/04/25(日) 18:59:07.81 ID:2bakgkUg.net]
悪用できない道具など無いキリッwwwwwwww

316 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 19:04:09.95 ID:3Jdhcm8q.net]
>>308
細かいけど関数の例はRefMut返すより&RefCellで返す方が安全な気がする
RefCell本体の参照をシェアするだけなら二重で呼んでも大丈夫だし
RefMut作るのは変更が必要な瞬間だけに限定したい

317 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 19:28:29.93 ID:gk8/Gpze.net]
>>309
&strはlenも持ってる
fat pointerでぐぐれ

318 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 19:34:37.74 ID:bkWFj8iO.net]
RefCellについての良いドキュメントや、本などがあれば教えて。

319 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 10:05:04.39 ID:HMswZhLH.net]
f3がコンパイルエラーになる理由がわかる方います?

fn f2<'a, 'b, T>(x: &'a &'b mut T) -> &'a T { x }
fn f3<'a, 'b, T>(x: &'a &'b mut T) -> &'b T { x }


&'b mut TがTに変換可能で
&'a Tから&'b Tが変換不可だから?



320 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 12:08:58.70 ID:DOIDJi7O.net]
>>314
‘aが’bをoutliveするかどうかわからないからじゃない?

fn f3<'a: 'b, 'b, T>(x: &'a &'b mut T) -> &'b T { x }

321 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 12:53:56.61 ID:SHVW/hag.net]
リーナスのRustのパニックがどうのはCを前提としたプロジェクトとRustの流儀がマッチしないって話に見える
逆にRustの流儀に沿ってデザインされたシステムなら問題は起きない可能性もある
てかそういう研究はされていないのかな?

322 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 12:57:40.62 ID:cN+lbm0F.net]
全部rustで書けばいいってか。馬鹿すぎる発想だな。

323 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 13:02:47.63 ID:+85I2LX6.net]
パニックってFFI Boundaryさえ越えなければベアメタルだろうが使っても問題ない認識なんだけど間違ってる?

324 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 14:09:26.26 ID:u7NjNSbC.net]
>>316
そのシステムの基礎を作るのがOSで、Rustの流儀に従うようにする
基礎の部分を作るために Rust の流儀を前提とした言語で書くのは出来ない。
C言語は素朴なマシン語に直るために基礎を作ることが出来る。

325 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 14:16:19.84 ID:ie84aLaE.net]
>>318
別に使って問題ないし、ベアメタル用のパニックハンドラなんかもいろいろあるよ。

326 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 14:33:09.14 ID:DOIDJi7O.net]
>>313
https://doc.rust-lang.org/book/ch15-05-interior-mutability.html
https://ricardomartins.cc/2016/06/08/interior-mutability
https://stackoverflow.com/questions/30831037/

327 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 15:35:40.97 ID:EKg1PdAE.net]
>>317
いきなりLinuxやWindows級のOSを作るのは現実的ではないが
組み込み用のOS程度なら馬鹿げてはないだろう

328 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:30:20.34 ID:ONuspOvn.net]
>>315
回答ありがとうございます
確かに'a: 'bを付けるとコンパイル通りますね
xの変換については
&'a (&'b mut T)
→ &'a T
→ &'b T ('a: 'b指定により可能)
という考え方で良いのでしょうか

329 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:39:37.14 ID:ONuspOvn.net]
>>323
いや自分で書いてて全然理解できてないです
下記変換は無しですかね。。
&'a (&'b mut T)
→ &'a T



330 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 20:00:38.89 ID:+85I2LX6.net]
>>324
&'a &'b T の lifetime は 'a と 'b の短い方になるから
むりやり書こうとすると min('a, 'b) みたいになる

'a: 'b というのは 'a が 'b より長生きするという意味で
この場合 min('a, 'b) = 'b になるので f3 が valid になる

なお、&'a &'b T については暗黙的に 'b: 'a とみなされてるからコンパイルが通る
('b: 'a の時しか &'a &'b T 型の値が作れないため)

331 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 20:05:03.48 ID:cN+lbm0F.net]
>>322
じゃあ自分で作ってみりゃいいじゃん。
linuxなんかにいちゃもんつけてないでさ。

332 名前:デフォルトの名無しさん [2021/04/26(月) 23:42:53.23 ID:y3Z2xzaE.net]
>>301
自分で書いてて全然理解できてない奴らが量産されて、キーボードを叩く拳に血が混じりながら
意味不明なコードを誰かが直す。なんというおそろしい未来かw

333 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 23:56:56.13 ID:MHmHz52r.net]
linuxにいちゃもんつけてる人はいないが
rustユーザーがlinuxにいちゃもんつけてると主張する人はいる不思議

334 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 01:41:47.11 ID:Wan/QADt.net]
来年は組み込みRust元年になるやで

335 名前:デフォルトの名無しさん [2021/04/27(火) 02:20:03.39 ID:+/hUQLiN.net]
あわしろ氏もそう言ってますね。

336 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 02:20:38.76 ID:GJuK6dTy.net]
何で今年じゃないの?

337 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 02:36:39.16 ID:lIgwswD1.net]
panicのせいで実質組み込みでも死んじゃったな
linusやりすぎだぞ

338 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 02:51:16.77 ID:53lThlBD.net]
>>332
Linux カーネルで受け入れられないからと言って組み込みで panic が使えないわけじゃないでしょ。

339 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 08:06:21.79 ID:C32SFGMy.net]
>>325
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=4f6ac5931e40d5e3dcf41712634e9390
元ネタこれなんですが
min('a,'b)的な考え方だと確かにf3について納得できる気がしますが、今度はf1が通るのがわからなくなります

f1を&'a &'b Tの参照がひとつ外せて&'b Tと考え
f0は'b:'aなので&'b Tから&'a Tに変換可能と考えると
f2が通ってf3が通らないことが理解できない
rust難しい。。



340 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 08:11:26.79 ID:Xxuu6Rq/.net]
>>326
だから作るにあたって参考になる資料とか実装例はあるのかって話なんだが
OSを作るみたいな資料はあってもその多くはCとアセンブラを前提としているし
それを参考にしたらC流になってしまうだろ

341 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 08:43:32.76 ID:W9X9APV9.net]
実用的なOSとしてはこの辺かな。
https://github.com/tock/tock

あとは研究論文レベルでは、Rustの所有権システムをOSの権限管理周りに使って堅牢なシステムを作ろう、みたいなのもある。

342 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 12:44:22.23 ID:/+bIFNU8.net]
こんなんCで書いてるのと変わらんだろ。。
https://github.com/tock/tock/blob/master/arch/cortex-m/src/lib.rs

343 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 13:52:57.49 ID:B18ZzSzj.net]
>>337
インラインアセンブリでもRustを使うとコンパイル時に強力なチェックが!
あるわけないよな…Cでいいと思います

344 名前:はちみつ餃子 mailto:sage [2021/04/27(火) 14:21:05.00 ID:gsHoUi4w.net]
OS 全体の中でも低レイヤ寄りの部分はしょうがないでしょ。
どうせほとんどインラインアセンブリなら C でもいいが Rust で駄目という理由にもならんし。

345 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 15:07:33.38 ID:V9b4VlmB.net]
>>339
Rustは書き辛いし、生成されるコードや意味解釈に闇がある。

346 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 15:26:51.13 ID:+CyfYLC3.net]
言語の設計思想をOS全体に広げて実用的に成功した例ってあるの?
LispOSみたいなのは全部失敗してるじゃん
Cはもともとアセンブラで書かれてたOSを高級言語で書き直せるように
言語自体を後から設計したものだからね
Rustがシステム記述言語として使われたいなら、Linusに意向に100%従って
言語仕様をどんどん書き換えていかないとダメ絶対

347 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 16:09:23.12 ID:sPb/VVK7.net]
ここまでRedoxの話を避けているのはなぜ

348 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 17:15:40.85 ID:MBTyAJrN.net]
Redoxとか使ったことないし……

349 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 19:00:31.49 ID:UNWScvKY.net]
>>341
forth?



350 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 19:17:36.18 ID:SeQzLHjb.net]
forthとかなつかしいなオイ

351 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 20:00:34.98 ID:B18ZzSzj.net]
FORTH作者「FORTHには申し訳ないことをした…」
ホントだよ!
FORTHがきちんとケアされ続けた世界線を見てみたい

352 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 00:25:46.13 ID:zZPOP3tR.net]
forthって今も使われとるのだろか。。

353 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 01:56:40.25 ID:RzWjm9zz.net]
昔はBIOS とか forth で書かれてたけど今はどうかなー

354 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 03:06:12.66 ID:k8H8q1SE.net]
Rustは配列に添え字アクセスする時、必ず境界チェックされるよね?

355 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 06:10:01.83 ID:Er4sy6AA.net]
言語設計とOSが一体ていうのがどのくらいまでを指すかにもよるけど
Smalltalk は元々は言語=OSみたいなシステムだったな

356 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 10:12:57.76 ID:HN4XQcog.net]
>>349
言語仕様的にチェックされるかという意味ならYes

357 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 10:51:18.82 ID:EDIdYwla.net]
>>351
ライブラリの実装ではチェックされるようなコードになっているが
最適化で消えるかも知れないので実行時に必ずしもチェックされるとは限らないという意味?

358 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 11:29:39.09 ID:1OyY1L+6.net]
コンパイル時に境界チェックを外せると確定してない限り最適化しようが境界チェックはやる

359 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 13:16:17.19 ID:BfdKSrwu.net]
例のLKML見直してて思ったけど
unsafeなコードetcが不変条件を破壊した場合に対する安全な対処法って今なんかあるのかな



360 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 13:47:19.78 ID:3EuQZ3Ew.net]
こんなとこじゃね
https://doc.rust-lang.org/edition-guide/rust-2018/error-handling-and-panics/controlling-panics-with-std-panic.html

361 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 15:27:12.87 ID:jQpDsyge.net]
二重投稿になるかも知れませんが、[0; n] で、n要素のi32 型の配列という
意味になるようですが、n が実行時にしか決まらない変数でも大丈夫ですか?
その場合、データ領域はスタック領域から確保するのでしょうか。

362 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 18:08:50.70 ID:HN4XQcog.net]
>>356
まずはリファレンスを
https://doc.rust-lang.org/std/primitive.array.html

363 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 18:22:21.07 ID:t+PzYqgO.net]
>>354
不変条件の種類によるけど最悪 undefined behavior になるから対処は無理じゃないかな
コンパイラの最適化レベル落とすとかで振る舞いを予測可能にすることは出来るのかも

364 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 19:36:40.90 ID:jQpDsyge.net]
>>357
でも、Box::new([0; n])と書いた場合には、nはコンパイル時に決まらない値
でもいいの?

365 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 20:41:55.42 ID:m2UbhZH5.net]
いいに決まってんだろハゲ!

366 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 20:43:40.06 ID:XWuZH88T.net]
Vec::with_capacity使えよ

367 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 21:18:06.47 ID:EDIdYwla.net]
試せば2秒で分かるんだから試しなよ

368 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 21:32:36.01 ID:lX6x7Umv.net]
2秒で試してみろや

369 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 21:34:25.75 ID:lX6x7Umv.net]
うまくいかなかったとしてほかに問題がないか状況を切り分け周辺を調査
誤りのない環境を整備
学習内容を保存し整理
単純な文法ひとつでも最低30分



370 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 22:27:00.95 ID:GVcFAhra.net]
Rustの場合
「2秒で試せる」 || 「試すしたら2秒でわかる」
error: 意図が曖昧です

Cの場合
「2秒で試せる」
「2秒で試してみろやカス」

371 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 00:40:38.91 ID:xah6OenV.net]
Golangが難しかったのでRustにきました
よろしくおねがいします

372 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 00:53:02.27 ID:90w9Shfm.net]
ゴールデンウィークに釣りですか

373 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 12:40:02.43 ID:K/HFYMcp.net]
Animal から、C++ の継承のようなことをした構造体(?)を Dog とした時、
Box<T> a; で T を Animalのようなものにして、a には、実際には Dog
への参照を入れるようなことは出来ますか?

374 名前:はちみつ餃子 mailto:sage [2021/04/29(木) 13:12:17.47 ID:x0Vd7BP9.net]
>>368
dyn かな?
完全に一致する機能というわけではないけど、
Rust ではトレイトに dyn キーワードを付けると (C++ で言うところの) 抽象クラスのように機能する。

375 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 13:33:28.09 ID:K/HFYMcp.net]
>>369
https://stackoverflow.com/questions/53897315/rust-polymorphic-calls-for-structs-in-a-vector
↑には、Questionの人の書いたのももしかしたら動作するかも知れないけど
Answerの人に従えば、以下のようにするのが正しいのかな?

trait Function {
fn value(&self, arg: &[f64]) -> f64;
}
struct Add {}
struct Multiply {}
impl Function for Add {
fn value(&self, arg: &[f64]) -> f64 { arg[0] + arg[1] }
}
impl Function for Multiply {
fn value(&self, arg: &[f64]) -> f64 { arg[0] * arg[1] }
}

impl Add {
fn new() -> Add { Add {} }
fn new_boxed() -> Box<Add> { Box::new(Add::new()) }
}
impl Multiply {
fn new() -> Multiply { Multiply {} }
fn new_boxed() -> Box<Multiply> { Box::new(Multiply::new()) }
}
fn main() {
let x = vec![1.0, 2.0];
let funcs: Vec<Box<dyn Function>> = vec![Add::new_boxed(), Multiply::new_boxed())];
for f in funcs {
println!("{}", f.value(&x));
}
}

376 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 17:34:51.47 ID:HuHtKfqb.net]
C++でis-a関係の継承使うデータはRustだとenum使う方が単純になるケースもある

struct AnimalData { ... }
struct DogData { ... }
struct CatData { ... }

#[non_exhaustive]
enum Animal {
Dog (AnimalData, DogData),
Cat (AnimalData, CatData),
}

この方法にも色々欠点はあるけど(クレートの外で新しいAnimalを追加できないとか)
trait使う抽象化が大袈裟だと思ったら考えてみて

377 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 17:51:11.31 ID:GXfM8nV1.net]
>>370
継承とは違うけど
そのユースケースはfnかFn使えば十分じゃないの?

let functions: Vec<fn(f64, f64) -> f64> = vec![|x, y| x + y, |x, y| x * y];
for f in &functions {
println!("{}", f(1.0, 2.0));
}

378 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 01:35:27.25 ID:7VhEvZ/Q.net]
>>372
簡単な例として書いただけで、同じ表示結果を得ることが目的ではないので
そういうこととは趣旨が違う。
さまざまな種類の多態なオブジェクトを1つのリストの中に入れるということは
オブジェクト指向に置いて基本的な概念の一つで、Polymorphismの基本なので、
継承的なものを使わずに同じ結果を書けたとしてもそれは違う。

379 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 15:35:29.77 ID:dTeJW22U.net]
ポリモーフィズムを理解してないようなやつでもRustをはじめるようになったんだな



380 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 17:06:26.25 ID:8uDUVNfy.net]
c++と同じで難しくてランタイム速度最強てなところが厨を呼び寄せてる

381 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 18:24:08.88 ID:K785SuXO.net]
C++やってたら配列のインデックスアクセスが安全かどうかや
ディスパッチがスタティックかどうかを普通気にするよね

382 名前:デフォルトの名無しさん [2021/04/30(金) 20:47:52.42 ID:eR/nI2gV.net]
グーグルやMSが「Rust」言語でOS開発、背景に国家による諜報活動の影=日経 xTECH中田敦

背景に国家による諜報活動の影っていう根拠が1つも示されてないんだけど、こいつの言ってることマジなん?
それとも日経新聞のおなじみの「飛ばし」によるクリック集め?

383 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 21:05:00.75 ID:MgEdsK0p.net]
GAFAMって言いたいだけ

384 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 21:27:01.84 ID:8uDUVNfy.net]
マイクロソフトがwindows書くのにc++使って後悔した話も知らん層が今も同じようなことやろうとしてんだろ。。
バカは歴史に学ばない。

385 名前:デフォルトの名無しさん [2021/05/01(土) 00:25:31.33 ID:6VZJr73m.net]
これ見てたら、いきなり日本語で「ネコ」って出てきてびっくりした
https://www.programming-idioms.org/cheatsheet/Rust
実は、お前らの中の誰かが書いてんのか?

386 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 05:47:22.98 ID:5xLRGYfU.net]
>>380
https://www.publickey1.jp/blog/21/http35firefoxmozillaquicrustneqo.html
今、プログラムやる若い層じゃアニメとアニメに出てくる簡単な日本語は基礎教養だぞ
github見たらアニメキャラアイコンだらけだ

387 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 08:00:51.92 ID:GEnkdmRT.net]
NANI

388 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 17:02:13.98 ID:1WejqaZh.net]
>>379
>マイクロソフトがwindows書くのにc++使って後悔した話
興味有るので詳しく :

389 名前: mailto:sage [2021/05/01(土) 17:21:37.61 ID:m+tkSw04.net]
>>379
流出したソースを見る限り、MS は C で Windows を書いていたようですよ‥‥



390 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 17:53:57.44 ID:/Wzn7OVr.net]
そういえば初期WindowsのWindow管理のサンプルコード見た記憶がある
ツリーリンクリストが構造体に埋め込む形で自作されてた

391 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 17:54:25.77 ID:/Wzn7OVr.net]
コードの8割方コメントだった

392 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 09:31:00.53 ID:/RYlgP4n.net]
The Windows Research Kernel AKA WRK
https://github.com/zhuhuibeishadiao/ntoskrnl

393 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 09:42:02.70 ID:3kB7D+rP.net]
9割がCか

394 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 09:51:42.31 ID:3kB7D+rP.net]
まあLinuxもCと一部アセンブラだから似たようなものか

395 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 12:27:53.91 ID:Jc9e5ibu.net]
当時の言語状況からして他に選択肢なんかなかったと思うがねぇ。
他の言語選択してたら駆逐されてた可能性すらある。

396 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 12:37:35.62 ID:anCj3LhS.net]
NT kernelが開発されたのが1990年代か
C++も既にあったがまだ浸透してなかったかな

397 名前:デフォルトの名無しさん [2021/05/02(日) 13:45:15.23 ID:c1rmI49h.net]
チュートリアルやってたらトレートオブジェクトってのの説明が意味不明級だったぜ
https://tourofrust.com/82_ja.html
なんじゃこりゃ

398 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 14:35:17.11 ID:n4dQrb8u.net]
>>392
Javaの知識があれば
 trait object: interfaceとして渡されたオブジェクト
という感じで説明できるけど何か使い慣れた言語はあるかね

399 名前:デフォルトの名無しさん [2021/05/02(日) 15:05:16.82 ID:c1rmI49h.net]
>>393
もしかしてExistential Container(和訳不明)が独立のオブジェクトとして括り出さている感じですか?
なおC#が一番使い慣れているのですが、この範囲ではJavaと大きく違わなさそうでしょうか・・・・



400 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 15:36:14.52 ID:hSgvj4Ff.net]
>>392
The Bookの該当箇所を読むのを勧める
Java/C#のインターフェースと基本的には同じだけど違う部分もある
https://doc.rust-lang.org/book/ch17-02-trait-objects.html

その少し後に出てくるBoxのコードに出てくる
`animals: Vec<Box<dyn NoiseMaker>>`の
Box<dyn NoiseMaker>がTrait Object

Trait Objectは動的サイズの型なので&NoiseMakerやBox<dyn NoiseMaker>のようにポインタの形になる
そのチュートリアルは前後のページとどう関係があるのかについて説明がほぼないのでわかりにくいかもね






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<267KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef