- 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/
- 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>のようにポインタの形になる そのチュートリアルは前後のページとどう関係があるのかについて説明がほぼないのでわかりにくいかもね
- 401 名前:はちみつ餃子 mailto:sage [2021/05/02(日) 15:50:22.98 ID:VAfyzxcR.net]
- 他の言語の概念と対応付けるよりはそれ自体として理解したほうがいいのは確かだと思う。
(理解できずに行き詰まるくらいなら雑な理解でも一旦前に進んだほうがいいかもしれんけど。) 言語機能ってひとつだけを取り出して使えるものじゃなくて、他の言語機能との連携の中で活きてくるものだから 個別の言語機能を他言語の言語機能と対応付けて理解しても綺麗に繋がらない感じがする。
- 402 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 15:58:09.22 ID:TmCNx2ML.net]
- https://doc.rust-lang.org/reference/types/trait-object.html
こっちじゃ`dyn Trait`のことをtrait objectと呼んでいるようだけど というか俺はこれだと思ってた Traitを実装する具体型の値のアドレスと、その型に対するTrait実装のvtableの組
- 403 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 16:04:49.31 ID:n4dQrb8u.net]
- >>394
C#はあまり詳しくないけど、例えばListのAddRange関数の引数の(IEnumerable collection)が近いかな AddRangeにはIEnumerableを実装してればどんな型でも渡せるはず(ArrayList、HashSet, etc) これをAddRangeの視点で見ると、渡されたcollectionが実際に何の型かは分からないけど IEnumerable(interface≒trait)を実装してることは分かってるから そのGetEnumeratorを呼んでIEnumeratorを受け取ってそこから取り出せる要素を全部追加すれば 目的の動作は果たせることになる このAddRangeの引数のcollectionがIEnumerableトレイトを実装したtrait objectって感じ
- 404 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 17:25:27.83 ID:hSgvj4Ff.net]
- >>397
正確に言うとリファレンスに書いてる通りdyn Trait型のオブジェクトがTrait Object &dyn TraitやBox<dyn Trait>はTrait Objectを指してるfat pointer でも実用上は&dyn TraitやBox<dyn Trait>のfat pointerのこと自体を Trait Objectというものとして理解したほうがわかりやすいので The Bookや他の解説書でも区別してないのが多い
- 405 名前:デフォルトの名無しさん mailto:sage [2021/05/03(月) 09:09:00.34 ID:AyvebyYK.net]
- >>76
Visual Rust#やろ
- 406 名前:デフォルトの名無しさん mailto:sage [2021/05/03(月) 11:04:52.91 ID:L2uysNOu.net]
- https://marketplace.visualstudio.com/items?itemName=vosen.VisualRust
- 407 名前:デフォルトの名無しさん mailto:sage [2021/05/03(月) 15:28:19.67 ID:lWPqbdGD.net]
- 囲い込んでブラックボックス強要するあたりはMSと相性いいかもな
- 408 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 15:41:01.40 ID:6lvPuDrb.net]
- facebookも財団に参加したのか
appleも時間の問題かな intelとかのCPUメーカーにも参加して欲しい所だが
- 409 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 17:15:37.01 ID:lMvsmKDJ.net]
- CPUメーカーが参加するとどういうことが嬉しいの?
LLVMなら分かるんだけど
- 410 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 20:03:06.80 ID:6lvPuDrb.net]
- まあ元intelのエンジニアも開発に参加しとるけどね
- 411 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 20:33:44
]
- [ここ壊れてます]
- 412 名前:.63 ID:PCq3WtR4.net mailto: え?脆弱で有名なあのインテル?
ヤバいじゃないですかぁ [] - [ここ壊れてます]
- 413 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 21:04:23.81 ID:mgj/rIpW.net]
- rustが低レイヤーの開発言語としては覇権取りそうね
今から勉強しとくのが良さそう
- 414 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 22:09:05.61 ID:mvlmOZ0b.net]
- 低レイヤーの仕事をしたことないってのがよくわかるわ。
- 415 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 00:03:56.29 ID:UOumGkwv.net]
- >>405
エンジニア個々人が参加するのは普通にあると思うんだけど 企業として支援することにどんなうまみがあるのかなと思って ただ改めて思うとintelもソフトウェアたくさん出しててrust使う旨みはあるから支援する意味はありそうだね
- 416 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 01:46:02.42 ID:E1emjEBd.net]
- SHやArmのRustコンパイラをメーカーが出たらガチ
- 417 名前:はちみつ餃子 mailto:sage [2021/05/05(水) 03:09:13.31 ID:o0iQ7lyN.net]
- うまみっていうか、それが上手くいくかどうかなんて事前にはわからん。
ほどほどに有用そうなものに支援してたらどれかひとつくらいはいい感じって程度の話だろ。
- 418 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 05:31:11.89 ID:rumk0idO.net]
- 協力し合うと同時にあまり勝手しないように牽制するのも目的なので
- 419 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 12:35:13.44 ID:UNdhfIGe.net]
- どうも頭の悪い輩が多いなと思ってたけど、
この言語、ある程度まではスクリプト的に書けるからなんだな。。 なんとなくおかしなこと言ってる奴の感覚がわかってきたわ。
|

|