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/
Rust part10
■ このスレッドは過去ログ倉庫に格納されています
2021/04/02(金) 21:38:04.11ID:L7IeSfpL
307デフォルトの名無しさん
2021/04/25(日) 17:40:32.44ID:M4WxeD2J308デフォルトの名無しさん
2021/04/25(日) 17:58:15.33ID:In1fvQYU >>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 を返す関数にするってことね
更新参照ってのが&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 を返す関数にするってことね
309デフォルトの名無しさん
2021/04/25(日) 18:57:01.34ID:1PPsEJ27 文字列についてなんかわかりにくいのだけど
C++に例えると
strはchar a[len]
Stringはstruct String { long len; char* str;}
&strはchar* str=&a[2]
このイメージで問題なし?
C++に例えると
strはchar a[len]
Stringはstruct String { long len; char* str;}
&strはchar* str=&a[2]
このイメージで問題なし?
310デフォルトの名無しさん
2021/04/25(日) 18:59:07.81ID:2bakgkUg 悪用できない道具など無いキリッwwwwwwww
311デフォルトの名無しさん
2021/04/25(日) 19:04:09.95ID:3Jdhcm8q >>308
細かいけど関数の例はRefMut返すより&RefCellで返す方が安全な気がする
RefCell本体の参照をシェアするだけなら二重で呼んでも大丈夫だし
RefMut作るのは変更が必要な瞬間だけに限定したい
細かいけど関数の例はRefMut返すより&RefCellで返す方が安全な気がする
RefCell本体の参照をシェアするだけなら二重で呼んでも大丈夫だし
RefMut作るのは変更が必要な瞬間だけに限定したい
312デフォルトの名無しさん
2021/04/25(日) 19:28:29.93ID:gk8/Gpze313デフォルトの名無しさん
2021/04/25(日) 19:34:37.74ID:bkWFj8iO RefCellについての良いドキュメントや、本などがあれば教えて。
314デフォルトの名無しさん
2021/04/26(月) 10:05:04.39ID:HMswZhLH 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が変換不可だから?
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が変換不可だから?
315デフォルトの名無しさん
2021/04/26(月) 12:08:58.70ID:DOIDJi7O316デフォルトの名無しさん
2021/04/26(月) 12:53:56.61ID:SHVW/hag リーナスのRustのパニックがどうのはCを前提としたプロジェクトとRustの流儀がマッチしないって話に見える
逆にRustの流儀に沿ってデザインされたシステムなら問題は起きない可能性もある
てかそういう研究はされていないのかな?
逆にRustの流儀に沿ってデザインされたシステムなら問題は起きない可能性もある
てかそういう研究はされていないのかな?
317デフォルトの名無しさん
2021/04/26(月) 12:57:40.62ID:cN+lbm0F 全部rustで書けばいいってか。馬鹿すぎる発想だな。
318デフォルトの名無しさん
2021/04/26(月) 13:02:47.63ID:+85I2LX6 パニックってFFI Boundaryさえ越えなければベアメタルだろうが使っても問題ない認識なんだけど間違ってる?
319デフォルトの名無しさん
2021/04/26(月) 14:09:26.26ID:u7NjNSbC >>316
そのシステムの基礎を作るのがOSで、Rustの流儀に従うようにする
基礎の部分を作るために Rust の流儀を前提とした言語で書くのは出来ない。
C言語は素朴なマシン語に直るために基礎を作ることが出来る。
そのシステムの基礎を作るのがOSで、Rustの流儀に従うようにする
基礎の部分を作るために Rust の流儀を前提とした言語で書くのは出来ない。
C言語は素朴なマシン語に直るために基礎を作ることが出来る。
320デフォルトの名無しさん
2021/04/26(月) 14:16:19.84ID:ie84aLaE >>318
別に使って問題ないし、ベアメタル用のパニックハンドラなんかもいろいろあるよ。
別に使って問題ないし、ベアメタル用のパニックハンドラなんかもいろいろあるよ。
321デフォルトの名無しさん
2021/04/26(月) 14:33:09.14ID:DOIDJi7O322デフォルトの名無しさん
2021/04/26(月) 15:35:40.97ID:EKg1PdAE323デフォルトの名無しさん
2021/04/26(月) 18:30:20.34ID:ONuspOvn >>315
回答ありがとうございます
確かに'a: 'bを付けるとコンパイル通りますね
xの変換については
&'a (&'b mut T)
→ &'a T
→ &'b T ('a: 'b指定により可能)
という考え方で良いのでしょうか
回答ありがとうございます
確かに'a: 'bを付けるとコンパイル通りますね
xの変換については
&'a (&'b mut T)
→ &'a T
→ &'b T ('a: 'b指定により可能)
という考え方で良いのでしょうか
324デフォルトの名無しさん
2021/04/26(月) 18:39:37.14ID:ONuspOvn325デフォルトの名無しさん
2021/04/26(月) 20:00:38.89ID:+85I2LX6 >>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 型の値が作れないため)
&'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 型の値が作れないため)
326デフォルトの名無しさん
2021/04/26(月) 20:05:03.48ID:cN+lbm0F327デフォルトの名無しさん
2021/04/26(月) 23:42:53.23ID:y3Z2xzaE328デフォルトの名無しさん
2021/04/26(月) 23:56:56.13ID:MHmHz52r linuxにいちゃもんつけてる人はいないが
rustユーザーがlinuxにいちゃもんつけてると主張する人はいる不思議
rustユーザーがlinuxにいちゃもんつけてると主張する人はいる不思議
329デフォルトの名無しさん
2021/04/27(火) 01:41:47.11ID:Wan/QADt 来年は組み込みRust元年になるやで
330デフォルトの名無しさん
2021/04/27(火) 02:20:03.39ID:+/hUQLiN あわしろ氏もそう言ってますね。
331デフォルトの名無しさん
2021/04/27(火) 02:20:38.76ID:GJuK6dTy 何で今年じゃないの?
332デフォルトの名無しさん
2021/04/27(火) 02:36:39.16ID:lIgwswD1 panicのせいで実質組み込みでも死んじゃったな
linusやりすぎだぞ
linusやりすぎだぞ
333デフォルトの名無しさん
2021/04/27(火) 02:51:16.77ID:53lThlBD >>332
Linux カーネルで受け入れられないからと言って組み込みで panic が使えないわけじゃないでしょ。
Linux カーネルで受け入れられないからと言って組み込みで panic が使えないわけじゃないでしょ。
334デフォルトの名無しさん
2021/04/27(火) 08:06:21.79ID:C32SFGMy >>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難しい。。
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難しい。。
335デフォルトの名無しさん
2021/04/27(火) 08:11:26.79ID:Xxuu6Rq/336デフォルトの名無しさん
2021/04/27(火) 08:43:32.76ID:W9X9APV9 実用的なOSとしてはこの辺かな。
https://github.com/tock/tock
あとは研究論文レベルでは、Rustの所有権システムをOSの権限管理周りに使って堅牢なシステムを作ろう、みたいなのもある。
https://github.com/tock/tock
あとは研究論文レベルでは、Rustの所有権システムをOSの権限管理周りに使って堅牢なシステムを作ろう、みたいなのもある。
337デフォルトの名無しさん
2021/04/27(火) 12:44:22.23ID:/+bIFNU8 こんなんCで書いてるのと変わらんだろ。。
https://github.com/tock/tock/blob/master/arch/cortex-m/src/lib.rs
https://github.com/tock/tock/blob/master/arch/cortex-m/src/lib.rs
338デフォルトの名無しさん
2021/04/27(火) 13:52:57.49ID:B18ZzSzj339はちみつ餃子 ◆8X2XSCHEME
2021/04/27(火) 14:21:05.00ID:gsHoUi4w OS 全体の中でも低レイヤ寄りの部分はしょうがないでしょ。
どうせほとんどインラインアセンブリなら C でもいいが Rust で駄目という理由にもならんし。
どうせほとんどインラインアセンブリなら C でもいいが Rust で駄目という理由にもならんし。
340デフォルトの名無しさん
2021/04/27(火) 15:07:33.38ID:V9b4VlmB >>339
Rustは書き辛いし、生成されるコードや意味解釈に闇がある。
Rustは書き辛いし、生成されるコードや意味解釈に闇がある。
341デフォルトの名無しさん
2021/04/27(火) 15:26:51.13ID:+CyfYLC3 言語の設計思想をOS全体に広げて実用的に成功した例ってあるの?
LispOSみたいなのは全部失敗してるじゃん
Cはもともとアセンブラで書かれてたOSを高級言語で書き直せるように
言語自体を後から設計したものだからね
Rustがシステム記述言語として使われたいなら、Linusに意向に100%従って
言語仕様をどんどん書き換えていかないとダメ絶対
LispOSみたいなのは全部失敗してるじゃん
Cはもともとアセンブラで書かれてたOSを高級言語で書き直せるように
言語自体を後から設計したものだからね
Rustがシステム記述言語として使われたいなら、Linusに意向に100%従って
言語仕様をどんどん書き換えていかないとダメ絶対
342デフォルトの名無しさん
2021/04/27(火) 16:09:23.12ID:sPb/VVK7 ここまでRedoxの話を避けているのはなぜ
343デフォルトの名無しさん
2021/04/27(火) 17:15:40.85ID:MBTyAJrN Redoxとか使ったことないし……
344デフォルトの名無しさん
2021/04/27(火) 19:00:31.49ID:UNWScvKY >>341
forth?
forth?
345デフォルトの名無しさん
2021/04/27(火) 19:17:36.18ID:SeQzLHjb forthとかなつかしいなオイ
346デフォルトの名無しさん
2021/04/27(火) 20:00:34.98ID:B18ZzSzj FORTH作者「FORTHには申し訳ないことをした…」
ホントだよ!
FORTHがきちんとケアされ続けた世界線を見てみたい
ホントだよ!
FORTHがきちんとケアされ続けた世界線を見てみたい
347デフォルトの名無しさん
2021/04/28(水) 00:25:46.13ID:zZPOP3tR forthって今も使われとるのだろか。。
348デフォルトの名無しさん
2021/04/28(水) 01:56:40.25ID:RzWjm9zz 昔はBIOS とか forth で書かれてたけど今はどうかなー
349デフォルトの名無しさん
2021/04/28(水) 03:06:12.66ID:k8H8q1SE Rustは配列に添え字アクセスする時、必ず境界チェックされるよね?
350デフォルトの名無しさん
2021/04/28(水) 06:10:01.83ID:Er4sy6AA 言語設計とOSが一体ていうのがどのくらいまでを指すかにもよるけど
Smalltalk は元々は言語=OSみたいなシステムだったな
Smalltalk は元々は言語=OSみたいなシステムだったな
351デフォルトの名無しさん
2021/04/28(水) 10:12:57.76ID:HN4XQcog >>349
言語仕様的にチェックされるかという意味ならYes
言語仕様的にチェックされるかという意味ならYes
352デフォルトの名無しさん
2021/04/28(水) 10:51:18.82ID:EDIdYwla353デフォルトの名無しさん
2021/04/28(水) 11:29:39.09ID:1OyY1L+6 コンパイル時に境界チェックを外せると確定してない限り最適化しようが境界チェックはやる
354デフォルトの名無しさん
2021/04/28(水) 13:16:17.19ID:BfdKSrwu 例のLKML見直してて思ったけど
unsafeなコードetcが不変条件を破壊した場合に対する安全な対処法って今なんかあるのかな
unsafeなコードetcが不変条件を破壊した場合に対する安全な対処法って今なんかあるのかな
355デフォルトの名無しさん
2021/04/28(水) 13:47:19.78ID:3EuQZ3Ew356デフォルトの名無しさん
2021/04/28(水) 15:27:12.87ID:jQpDsyge 二重投稿になるかも知れませんが、[0; n] で、n要素のi32 型の配列という
意味になるようですが、n が実行時にしか決まらない変数でも大丈夫ですか?
その場合、データ領域はスタック領域から確保するのでしょうか。
意味になるようですが、n が実行時にしか決まらない変数でも大丈夫ですか?
その場合、データ領域はスタック領域から確保するのでしょうか。
357デフォルトの名無しさん
2021/04/28(水) 18:08:50.70ID:HN4XQcog358デフォルトの名無しさん
2021/04/28(水) 18:22:21.07ID:t+PzYqgO359デフォルトの名無しさん
2021/04/28(水) 19:36:40.90ID:jQpDsyge360デフォルトの名無しさん
2021/04/28(水) 20:41:55.42ID:m2UbhZH5 いいに決まってんだろハゲ!
361デフォルトの名無しさん
2021/04/28(水) 20:43:40.06ID:XWuZH88T Vec::with_capacity使えよ
362デフォルトの名無しさん
2021/04/28(水) 21:18:06.47ID:EDIdYwla 試せば2秒で分かるんだから試しなよ
363デフォルトの名無しさん
2021/04/28(水) 21:32:36.01ID:lX6x7Umv 2秒で試してみろや
364デフォルトの名無しさん
2021/04/28(水) 21:34:25.75ID:lX6x7Umv うまくいかなかったとしてほかに問題がないか状況を切り分け周辺を調査
誤りのない環境を整備
学習内容を保存し整理
単純な文法ひとつでも最低30分
誤りのない環境を整備
学習内容を保存し整理
単純な文法ひとつでも最低30分
365デフォルトの名無しさん
2021/04/28(水) 22:27:00.95ID:GVcFAhra Rustの場合
「2秒で試せる」 || 「試すしたら2秒でわかる」
error: 意図が曖昧です
Cの場合
「2秒で試せる」
「2秒で試してみろやカス」
「2秒で試せる」 || 「試すしたら2秒でわかる」
error: 意図が曖昧です
Cの場合
「2秒で試せる」
「2秒で試してみろやカス」
366デフォルトの名無しさん
2021/04/29(木) 00:40:38.91ID:xah6OenV Golangが難しかったのでRustにきました
よろしくおねがいします
よろしくおねがいします
367デフォルトの名無しさん
2021/04/29(木) 00:53:02.27ID:90w9Shfm ゴールデンウィークに釣りですか
368デフォルトの名無しさん
2021/04/29(木) 12:40:02.43ID:K/HFYMcp Animal から、C++ の継承のようなことをした構造体(?)を Dog とした時、
Box<T> a; で T を Animalのようなものにして、a には、実際には Dog
への参照を入れるようなことは出来ますか?
Box<T> a; で T を Animalのようなものにして、a には、実際には Dog
への参照を入れるようなことは出来ますか?
369はちみつ餃子 ◆8X2XSCHEME
2021/04/29(木) 13:12:17.47ID:x0Vd7BP9370デフォルトの名無しさん
2021/04/29(木) 13:33:28.09ID:K/HFYMcp >>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));
}
}
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));
}
}
371デフォルトの名無しさん
2021/04/29(木) 17:34:51.47ID:HuHtKfqb C++でis-a関係の継承使うデータはRustだとenum使う方が単純になるケースもある
struct AnimalData { ... }
struct DogData { ... }
struct CatData { ... }
#[non_exhaustive]
enum Animal {
Dog (AnimalData, DogData),
Cat (AnimalData, CatData),
}
この方法にも色々欠点はあるけど(クレートの外で新しいAnimalを追加できないとか)
trait使う抽象化が大袈裟だと思ったら考えてみて
struct AnimalData { ... }
struct DogData { ... }
struct CatData { ... }
#[non_exhaustive]
enum Animal {
Dog (AnimalData, DogData),
Cat (AnimalData, CatData),
}
この方法にも色々欠点はあるけど(クレートの外で新しいAnimalを追加できないとか)
trait使う抽象化が大袈裟だと思ったら考えてみて
372デフォルトの名無しさん
2021/04/29(木) 17:51:11.31ID:GXfM8nV1 >>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));
}
継承とは違うけど
そのユースケースは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));
}
373デフォルトの名無しさん
2021/04/30(金) 01:35:27.25ID:7VhEvZ/Q >>372
簡単な例として書いただけで、同じ表示結果を得ることが目的ではないので
そういうこととは趣旨が違う。
さまざまな種類の多態なオブジェクトを1つのリストの中に入れるということは
オブジェクト指向に置いて基本的な概念の一つで、Polymorphismの基本なので、
継承的なものを使わずに同じ結果を書けたとしてもそれは違う。
簡単な例として書いただけで、同じ表示結果を得ることが目的ではないので
そういうこととは趣旨が違う。
さまざまな種類の多態なオブジェクトを1つのリストの中に入れるということは
オブジェクト指向に置いて基本的な概念の一つで、Polymorphismの基本なので、
継承的なものを使わずに同じ結果を書けたとしてもそれは違う。
374デフォルトの名無しさん
2021/04/30(金) 15:35:29.77ID:dTeJW22U ポリモーフィズムを理解してないようなやつでもRustをはじめるようになったんだな
375デフォルトの名無しさん
2021/04/30(金) 17:06:26.25ID:8uDUVNfy c++と同じで難しくてランタイム速度最強てなところが厨を呼び寄せてる
376デフォルトの名無しさん
2021/04/30(金) 18:24:08.88ID:K785SuXO C++やってたら配列のインデックスアクセスが安全かどうかや
ディスパッチがスタティックかどうかを普通気にするよね
ディスパッチがスタティックかどうかを普通気にするよね
377デフォルトの名無しさん
2021/04/30(金) 20:47:52.42ID:eR/nI2gV グーグルやMSが「Rust」言語でOS開発、背景に国家による諜報活動の影=日経 xTECH中田敦
背景に国家による諜報活動の影っていう根拠が1つも示されてないんだけど、こいつの言ってることマジなん?
それとも日経新聞のおなじみの「飛ばし」によるクリック集め?
背景に国家による諜報活動の影っていう根拠が1つも示されてないんだけど、こいつの言ってることマジなん?
それとも日経新聞のおなじみの「飛ばし」によるクリック集め?
378デフォルトの名無しさん
2021/04/30(金) 21:05:00.75ID:MgEdsK0p GAFAMって言いたいだけ
379デフォルトの名無しさん
2021/04/30(金) 21:27:01.84ID:8uDUVNfy マイクロソフトがwindows書くのにc++使って後悔した話も知らん層が今も同じようなことやろうとしてんだろ。。
バカは歴史に学ばない。
バカは歴史に学ばない。
380デフォルトの名無しさん
2021/05/01(土) 00:25:31.33ID:6VZJr73m これ見てたら、いきなり日本語で「ネコ」って出てきてびっくりした
https://www.programming-idioms.org/cheatsheet/Rust
実は、お前らの中の誰かが書いてんのか?
https://www.programming-idioms.org/cheatsheet/Rust
実は、お前らの中の誰かが書いてんのか?
381デフォルトの名無しさん
2021/05/01(土) 05:47:22.98ID:5xLRGYfU >>380
https://www.publickey1.jp/blog/21/http35firefoxmozillaquicrustneqo.html
今、プログラムやる若い層じゃアニメとアニメに出てくる簡単な日本語は基礎教養だぞ
github見たらアニメキャラアイコンだらけだ
https://www.publickey1.jp/blog/21/http35firefoxmozillaquicrustneqo.html
今、プログラムやる若い層じゃアニメとアニメに出てくる簡単な日本語は基礎教養だぞ
github見たらアニメキャラアイコンだらけだ
382デフォルトの名無しさん
2021/05/01(土) 08:00:51.92ID:GEnkdmRT NANI
383デフォルトの名無しさん
2021/05/01(土) 17:02:13.98ID:1WejqaZh >>379
流出したソースを見る限り、MS は C で Windows を書いていたようですよ‥‥
流出したソースを見る限り、MS は C で Windows を書いていたようですよ‥‥
385デフォルトの名無しさん
2021/05/01(土) 17:53:57.44ID:/Wzn7OVr そういえば初期WindowsのWindow管理のサンプルコード見た記憶がある
ツリーリンクリストが構造体に埋め込む形で自作されてた
ツリーリンクリストが構造体に埋め込む形で自作されてた
386デフォルトの名無しさん
2021/05/01(土) 17:54:25.77ID:/Wzn7OVr コードの8割方コメントだった
387デフォルトの名無しさん
2021/05/02(日) 09:31:00.53ID:/RYlgP4n The Windows Research Kernel AKA WRK
https://github.com/zhuhuibeishadiao/ntoskrnl
https://github.com/zhuhuibeishadiao/ntoskrnl
388デフォルトの名無しさん
2021/05/02(日) 09:42:02.70ID:3kB7D+rP 9割がCか
389デフォルトの名無しさん
2021/05/02(日) 09:51:42.31ID:3kB7D+rP まあLinuxもCと一部アセンブラだから似たようなものか
390デフォルトの名無しさん
2021/05/02(日) 12:27:53.91ID:Jc9e5ibu 当時の言語状況からして他に選択肢なんかなかったと思うがねぇ。
他の言語選択してたら駆逐されてた可能性すらある。
他の言語選択してたら駆逐されてた可能性すらある。
391デフォルトの名無しさん
2021/05/02(日) 12:37:35.62ID:anCj3LhS NT kernelが開発されたのが1990年代か
C++も既にあったがまだ浸透してなかったかな
C++も既にあったがまだ浸透してなかったかな
392デフォルトの名無しさん
2021/05/02(日) 13:45:15.23ID:c1rmI49h393デフォルトの名無しさん
2021/05/02(日) 14:35:17.11ID:n4dQrb8u394デフォルトの名無しさん
2021/05/02(日) 15:05:16.82ID:c1rmI49h >>393
もしかしてExistential Container(和訳不明)が独立のオブジェクトとして括り出さている感じですか?
なおC#が一番使い慣れているのですが、この範囲ではJavaと大きく違わなさそうでしょうか・・・・
もしかしてExistential Container(和訳不明)が独立のオブジェクトとして括り出さている感じですか?
なおC#が一番使い慣れているのですが、この範囲ではJavaと大きく違わなさそうでしょうか・・・・
395デフォルトの名無しさん
2021/05/02(日) 15:36:14.52ID:hSgvj4Ff >>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>のようにポインタの形になる
そのチュートリアルは前後のページとどう関係があるのかについて説明がほぼないのでわかりにくいかもね
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>のようにポインタの形になる
そのチュートリアルは前後のページとどう関係があるのかについて説明がほぼないのでわかりにくいかもね
396はちみつ餃子 ◆8X2XSCHEME
2021/05/02(日) 15:50:22.98ID:VAfyzxcR 他の言語の概念と対応付けるよりはそれ自体として理解したほうがいいのは確かだと思う。
(理解できずに行き詰まるくらいなら雑な理解でも一旦前に進んだほうがいいかもしれんけど。)
言語機能ってひとつだけを取り出して使えるものじゃなくて、他の言語機能との連携の中で活きてくるものだから
個別の言語機能を他言語の言語機能と対応付けて理解しても綺麗に繋がらない感じがする。
(理解できずに行き詰まるくらいなら雑な理解でも一旦前に進んだほうがいいかもしれんけど。)
言語機能ってひとつだけを取り出して使えるものじゃなくて、他の言語機能との連携の中で活きてくるものだから
個別の言語機能を他言語の言語機能と対応付けて理解しても綺麗に繋がらない感じがする。
397デフォルトの名無しさん
2021/05/02(日) 15:58:09.22ID:TmCNx2ML https://doc.rust-lang.org/reference/types/trait-object.html
こっちじゃ`dyn Trait`のことをtrait objectと呼んでいるようだけど
というか俺はこれだと思ってた
Traitを実装する具体型の値のアドレスと、その型に対するTrait実装のvtableの組
こっちじゃ`dyn Trait`のことをtrait objectと呼んでいるようだけど
というか俺はこれだと思ってた
Traitを実装する具体型の値のアドレスと、その型に対するTrait実装のvtableの組
398デフォルトの名無しさん
2021/05/02(日) 16:04:49.31ID:n4dQrb8u >>394
C#はあまり詳しくないけど、例えばListのAddRange関数の引数の(IEnumerable collection)が近いかな
AddRangeにはIEnumerableを実装してればどんな型でも渡せるはず(ArrayList、HashSet, etc)
これをAddRangeの視点で見ると、渡されたcollectionが実際に何の型かは分からないけど
IEnumerable(interface≒trait)を実装してることは分かってるから
そのGetEnumeratorを呼んでIEnumeratorを受け取ってそこから取り出せる要素を全部追加すれば
目的の動作は果たせることになる
このAddRangeの引数のcollectionがIEnumerableトレイトを実装したtrait objectって感じ
C#はあまり詳しくないけど、例えばListのAddRange関数の引数の(IEnumerable collection)が近いかな
AddRangeにはIEnumerableを実装してればどんな型でも渡せるはず(ArrayList、HashSet, etc)
これをAddRangeの視点で見ると、渡されたcollectionが実際に何の型かは分からないけど
IEnumerable(interface≒trait)を実装してることは分かってるから
そのGetEnumeratorを呼んでIEnumeratorを受け取ってそこから取り出せる要素を全部追加すれば
目的の動作は果たせることになる
このAddRangeの引数のcollectionがIEnumerableトレイトを実装したtrait objectって感じ
399デフォルトの名無しさん
2021/05/02(日) 17:25:27.83ID:hSgvj4Ff >>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や他の解説書でも区別してないのが多い
正確に言うとリファレンスに書いてる通りdyn Trait型のオブジェクトがTrait Object
&dyn TraitやBox<dyn Trait>はTrait Objectを指してるfat pointer
でも実用上は&dyn TraitやBox<dyn Trait>のfat pointerのこと自体を
Trait Objectというものとして理解したほうがわかりやすいので
The Bookや他の解説書でも区別してないのが多い
400デフォルトの名無しさん
2021/05/03(月) 09:09:00.34ID:AyvebyYK >>76
Visual Rust#やろ
Visual Rust#やろ
401デフォルトの名無しさん
2021/05/03(月) 11:04:52.91ID:L2uysNOu402デフォルトの名無しさん
2021/05/03(月) 15:28:19.67ID:lWPqbdGD 囲い込んでブラックボックス強要するあたりはMSと相性いいかもな
403デフォルトの名無しさん
2021/05/04(火) 15:41:01.40ID:6lvPuDrb facebookも財団に参加したのか
appleも時間の問題かな
intelとかのCPUメーカーにも参加して欲しい所だが
appleも時間の問題かな
intelとかのCPUメーカーにも参加して欲しい所だが
404デフォルトの名無しさん
2021/05/04(火) 17:15:37.01ID:lMvsmKDJ CPUメーカーが参加するとどういうことが嬉しいの?
LLVMなら分かるんだけど
LLVMなら分かるんだけど
405デフォルトの名無しさん
2021/05/04(火) 20:03:06.80ID:6lvPuDrb まあ元intelのエンジニアも開発に参加しとるけどね
406デフォルトの名無しさん
2021/05/04(火) 20:33:44.63ID:PCq3WtR4 え?脆弱で有名なあのインテル?
ヤバいじゃないですかぁ
ヤバいじゃないですかぁ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【和訳付き】レーダー照射問題 中国軍と自衛隊との“音声データ”公開 中国国営メディア [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 中国とロシアの爆撃機、日本周辺で共同飛行 [少考さん★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★2 [597533159]
- 【悲報】昭和天皇「朕のチンチンw」ジャップ「現人神!現人神!」 [616817505]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★3 [597533159]
- 【高市朗報】ボーナス、支給される [391924956]
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
- 【高市筋肉】筋トレおじさん、爆増wwwwwwwwwwwwwステロイド使用も増 [308389511]
