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
252デフォルトの名無しさん
2021/04/23(金) 20:51:53.23ID:+YpcBxgU C++ vs Rustスレでも作ってそっちでやってくれマジで
不毛すぎる
不毛すぎる
253デフォルトの名無しさん
2021/04/23(金) 21:04:58.31ID:g6tU54WL >>249
そうだね、記述量の多い言語だと思う
そうだね、記述量の多い言語だと思う
254デフォルトの名無しさん
2021/04/23(金) 22:37:03.61ID:E6ocica9 Rustのコンパイラと戦って勝ったコードは
シンプルでエレガントで簡潔なことが多い
らしい
mjk、
シンプルでエレガントで簡潔なことが多い
らしい
mjk、
255デフォルトの名無しさん
2021/04/23(金) 23:34:43.49ID:KS/Kkucz linusはやっぱすげーな
洞察力が違うわ
もちろんその道の神的な存在とはいえ
たいして知らない言語の弱点を一瞬にして暴いて
論破できるのは凄い
洞察力が違うわ
もちろんその道の神的な存在とはいえ
たいして知らない言語の弱点を一瞬にして暴いて
論破できるのは凄い
256デフォルトの名無しさん
2021/04/24(土) 01:08:35.83ID:h5KFlu4v >>251
例えばどんなとき?
例えばどんなとき?
257デフォルトの名無しさん
2021/04/24(土) 01:20:53.45ID:vtdgUVMq どんなときもどんなときもRustがRustらしくある〜ために〜
258デフォルトの名無しさん
2021/04/24(土) 08:06:24.96ID:nPKzA798259デフォルトの名無しさん
2021/04/24(土) 08:33:43.03ID:AUtfiExa260デフォルトの名無しさん
2021/04/24(土) 08:39:09.80ID:/opj2hnT C++とRustは対立なんてしてない
Rustが怖いC++お爺ちゃんがRustに噛みつているだけでしょ
Rustが怖いC++お爺ちゃんがRustに噛みつているだけでしょ
261デフォルトの名無しさん
2021/04/24(土) 08:48:20.99ID:MAG7Rri7 カーネルの件で完全に拗らせとるな
262デフォルトの名無しさん
2021/04/24(土) 08:54:35.43ID:8O98k7om > C++との対立構造はRustにとって無視できないテーマでしょ
お前のテーマなんてどうでもいいんだよ
よそでやってくれ
お前のテーマなんてどうでもいいんだよ
よそでやってくれ
263デフォルトの名無しさん
2021/04/24(土) 08:59:24.96ID:MAG7Rri7 一般的なテーマだってこともわからんのか。馬鹿だな。
264デフォルトの名無しさん
2021/04/24(土) 09:02:59.11ID:CqGuC/ho リナス「やっぱCが至高、C++もRustもクソ!」
265デフォルトの名無しさん
2021/04/24(土) 09:13:04.98ID:IM8zU0Pj rustもpanicをコアから外せればいけると思うのだが
もろ言語のコアなんだよな
痛いところ突かれた
もろ言語のコアなんだよな
痛いところ突かれた
266デフォルトの名無しさん
2021/04/24(土) 10:06:12.73ID:yJd/gJxx 言語の問題じゃなくてライブラリの問題では
267デフォルトの名無しさん
2021/04/24(土) 10:11:32.69ID:vtdgUVMq へーpanicってライブラリなんだ
268デフォルトの名無しさん
2021/04/24(土) 10:29:13.61ID:nPKzA798 >>259
仮にその対立構造を認めるにしても
「雑に書くならC++のほうが楽」なんて、曖昧で基準も何も示されない話に真面目に付き合う奴はいないよ
そういう奴らのための隔離スレとして用意したから好き放題書き散らせばいい
仮にその対立構造を認めるにしても
「雑に書くならC++のほうが楽」なんて、曖昧で基準も何も示されない話に真面目に付き合う奴はいないよ
そういう奴らのための隔離スレとして用意したから好き放題書き散らせばいい
269デフォルトの名無しさん
2021/04/24(土) 10:42:59.04ID:2MdujosH コード長の話でしょ?
どー考えてもC++の方が短いよ
んなとこで張り合ってもしゃーない
どー考えてもC++の方が短いよ
んなとこで張り合ってもしゃーない
270デフォルトの名無しさん
2021/04/24(土) 11:44:33.91ID:8fCyRscb 3割ぐらいは長いな
https://benchmarksgame-team.pages.debian.net/benchmarksgame/how-programs-are-measured.html
median source code gzip (July 2018)
Ruby 568
Python 672
C++ 1044
C 1115
Rust 1319
https://benchmarksgame-team.pages.debian.net/benchmarksgame/how-programs-are-measured.html
median source code gzip (July 2018)
Ruby 568
Python 672
C++ 1044
C 1115
Rust 1319
271デフォルトの名無しさん
2021/04/24(土) 12:07:10.57ID:RPGHdVOi >>258
乙。次からテンプレ入りで
>>980
スレ立てよろ
==========
公式
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を学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※C++との比較は専用スレへ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
前スレ
Rust part10
https://mevius.5ch.net/test/read.cgi/tech/1617367084/
==========
乙。次からテンプレ入りで
>>980
スレ立てよろ
==========
公式
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を学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※C++との比較は専用スレへ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
前スレ
Rust part10
https://mevius.5ch.net/test/read.cgi/tech/1617367084/
==========
272デフォルトの名無しさん
2021/04/24(土) 12:17:31.75ID:HBFF7y2e Rustしかまじめに勉強したことないけどいい言語だと思うよ
273デフォルトの名無しさん
2021/04/24(土) 12:21:15.48ID:8fCyRscb274デフォルトの名無しさん
2021/04/24(土) 12:39:27.31ID:aNHhbYgZ Rustはコンパイルでひどい目にあうから問題無い
同じことだ
同じことだ
275デフォルトの名無しさん
2021/04/24(土) 12:56:02.52ID:1Wwd5OE1 Rustのコンパイラに怒られまくる奴は三流プログラマ
276デフォルトの名無しさん
2021/04/24(土) 12:59:06.14ID:hc4SaSPr Rustの文字列変数って、
str1 = str2;
のように書いた時、copyではなくmoveでしたっけ?
str1 = str2;
のように書いた時、copyではなくmoveでしたっけ?
277デフォルトの名無しさん
2021/04/24(土) 13:03:33.00ID:kYV5ExS+ String型ならmove、&str型ならcopy
文字列リテラルなら後者
文字列リテラルなら後者
278デフォルトの名無しさん
2021/04/24(土) 13:09:43.73ID:hc4SaSPr >>276
調べてみたら、やっぱり、
let s1 = String::from("hello");
let s2 = s1;
とすると、以後、s1は使用できなくなり、使用しようとするとコンパイルエラー
になるんだね。こうなるのは珍しいと言えば珍しい言語。
1. Javaだと、参照を入れるだけで同じ実体を指しているため、s2経由で変更してもs1が
指しているものも変更される。
2. JS の 文字列は primitive 型なので「コピー動作」となり、s2とs1は別の実体を
指すことになり、一方を変更しても他方には変更の影響は及ばない。
3. MFCのCStringも意味的にはコピー動作なのでJSと似ているが、高速化のため、
代入後に一度も書き換えなければ、文字列を入れているメモリブロックは複製
されないし、コピーもされない。
4. STL(C++) の std::striingもMFCと意味的には似た動作。
5. BASIC言語でも、文字列はコピー動作。
6. Rubyの場合、Javaと同じで同じ実体を参照しているだけなので、一方を書き換えると
他方も全く同じように書き換わる。コピーするためには、s2 = s1.dup; と書く。
つまり、
a. BASIC、JS、MFC、STL(C++)は似た動作。
b. JavaとRubyも似た動作。
c. Rustは、b の系統に似ているが、s1 が使えなくなるのでちょっと違う。
調べてみたら、やっぱり、
let s1 = String::from("hello");
let s2 = s1;
とすると、以後、s1は使用できなくなり、使用しようとするとコンパイルエラー
になるんだね。こうなるのは珍しいと言えば珍しい言語。
1. Javaだと、参照を入れるだけで同じ実体を指しているため、s2経由で変更してもs1が
指しているものも変更される。
2. JS の 文字列は primitive 型なので「コピー動作」となり、s2とs1は別の実体を
指すことになり、一方を変更しても他方には変更の影響は及ばない。
3. MFCのCStringも意味的にはコピー動作なのでJSと似ているが、高速化のため、
代入後に一度も書き換えなければ、文字列を入れているメモリブロックは複製
されないし、コピーもされない。
4. STL(C++) の std::striingもMFCと意味的には似た動作。
5. BASIC言語でも、文字列はコピー動作。
6. Rubyの場合、Javaと同じで同じ実体を参照しているだけなので、一方を書き換えると
他方も全く同じように書き換わる。コピーするためには、s2 = s1.dup; と書く。
つまり、
a. BASIC、JS、MFC、STL(C++)は似た動作。
b. JavaとRubyも似た動作。
c. Rustは、b の系統に似ているが、s1 が使えなくなるのでちょっと違う。
279デフォルトの名無しさん
2021/04/24(土) 13:13:27.35ID:vtdgUVMq >>278
無駄なことに時間使ってないでthe bookくらい読みなよ
無駄なことに時間使ってないでthe bookくらい読みなよ
280デフォルトの名無しさん
2021/04/24(土) 13:20:12.76ID:hc4SaSPr >>
C# は、「b.」の系統で、JavaとRubyと似た動作だね。
C# は、「b.」の系統で、JavaとRubyと似た動作だね。
281デフォルトの名無しさん
2021/04/24(土) 13:23:38.54ID:hc4SaSPr >>279
いろんな言語をかじってしまうと、どれがどれだか分からなくなってしまうんだよ。
文字列の s2 = s1 の動作は:
a. BASIC、JS、MFC、STL(C++)は似た動作。中身をコピーする。
b. Java、Ruby、C# が似た動作。参照を代入するだけ。コピーしたければ明示する。
c. Rustは、b の系統に似ているが、s1 が使えなくなる。
いろんな言語をかじってしまうと、どれがどれだか分からなくなってしまうんだよ。
文字列の s2 = s1 の動作は:
a. BASIC、JS、MFC、STL(C++)は似た動作。中身をコピーする。
b. Java、Ruby、C# が似た動作。参照を代入するだけ。コピーしたければ明示する。
c. Rustは、b の系統に似ているが、s1 が使えなくなる。
282デフォルトの名無しさん
2021/04/24(土) 13:27:17.48ID:hc4SaSPr283デフォルトの名無しさん
2021/04/24(土) 13:36:44.63ID:hc4SaSPr >>281
C++11以降は、x = y と書いた時、y が捨ててよいと判断した場合は、
moveで、それ以外の時は copy。
一方、Rustだと、「デフォルト move」なので、基本的には move 動作。
cooy したければ、x = y.clone; と書くのかな。
色々ややこしい。
C++11以降は、x = y と書いた時、y が捨ててよいと判断した場合は、
moveで、それ以外の時は copy。
一方、Rustだと、「デフォルト move」なので、基本的には move 動作。
cooy したければ、x = y.clone; と書くのかな。
色々ややこしい。
284デフォルトの名無しさん
2021/04/24(土) 13:39:26.22ID:glcm53ed >>283
> C++11以降は、x = y と書いた時、y が捨ててよいと判断した場合は、moveで、それ以外の時は copy。
そんな親切け???
左辺値同士だと明示しないとmoveしてくれないだろ
最適化次第ではしてくれるの?
> C++11以降は、x = y と書いた時、y が捨ててよいと判断した場合は、moveで、それ以外の時は copy。
そんな親切け???
左辺値同士だと明示しないとmoveしてくれないだろ
最適化次第ではしてくれるの?
285デフォルトの名無しさん
2021/04/24(土) 13:43:36.80ID:hc4SaSPr >>284
えっと、関数の戻り値が構造体型(or クラス型)の場合、右辺値と解釈されるので、
s2 = func(xxx);
見たいにした場合は自動的に move代入されたと思う。
それ以外だと、たいていは、s2 = std::move(s1); のように書かなければ
copy代入になるんじゃないかな。
s2 = func(xxx).s;
のようにした場合も move代入になるはず。
自信は無い。
えっと、関数の戻り値が構造体型(or クラス型)の場合、右辺値と解釈されるので、
s2 = func(xxx);
見たいにした場合は自動的に move代入されたと思う。
それ以外だと、たいていは、s2 = std::move(s1); のように書かなければ
copy代入になるんじゃないかな。
s2 = func(xxx).s;
のようにした場合も move代入になるはず。
自信は無い。
286デフォルトの名無しさん
2021/04/24(土) 13:47:10.36ID:Kvw1J2lw287デフォルトの名無しさん
2021/04/24(土) 13:47:25.73ID:hc4SaSPr >>285
自分の記憶だと、一時オブジェクトも右辺値だから、
s2 = std::string("xxx");
ともし書いたとしたら、右辺は右辺値になるのでmove代入になるはず。
s2 = s3 + s4;
みたいにしても、右辺は関数の戻り地と解釈されるので右辺値になるので
move代入になるはず。
自分の記憶だと、一時オブジェクトも右辺値だから、
s2 = std::string("xxx");
ともし書いたとしたら、右辺は右辺値になるのでmove代入になるはず。
s2 = s3 + s4;
みたいにしても、右辺は関数の戻り地と解釈されるので右辺値になるので
move代入になるはず。
288デフォルトの名無しさん
2021/04/24(土) 15:48:01.23ID:QvmQEBVA Rustってコードをフォーマットしてくれる機能があるからいいね
これこそモダンな言語だと思う
これこそモダンな言語だと思う
289デフォルトの名無しさん
2021/04/24(土) 16:01:24.29ID:93XQhLV9 C++と比べりゃ大抵の言語はモダンだろうよ
290デフォルトの名無しさん
2021/04/24(土) 16:18:04.79ID:rGfKetgv しーぷらぷらあきらめてどろっぷあうとした
ちんちんぶらぶらまるはだかなひとたちが
rustすぱぁとをきめるスレ
ちんちんぶらぶらまるはだかなひとたちが
rustすぱぁとをきめるスレ
291デフォルトの名無しさん
2021/04/24(土) 16:38:27.41ID:MAG7Rri7 lintツールも満足に使えない人が喜んでるのかね
292デフォルトの名無しさん
2021/04/24(土) 17:14:02.73ID:yJd/gJxx 非Syncなデータに複数スレッドからアクセスするコードに警告だしてくれるlintある?
293デフォルトの名無しさん
2021/04/24(土) 18:12:05.46ID:6780eEd1 へーそれコードをフォーマットしてくれる機能なんだ
294デフォルトの名無しさん
2021/04/24(土) 22:25:57.79ID:EY30SvcB >>293
君は、松永の論文を読んだのかい?
君は、松永の論文を読んだのかい?
295デフォルトの名無しさん
2021/04/25(日) 11:06:21.68ID:M4WxeD2J 質問です
let a = 10;
let b = &a;
let &c = b;
としたときに変数cは数値の10になるのですが
cの前にある&は参照外しの効果があるということなのでしょうか?
let a = 10;
let b = &a;
let &c = b;
としたときに変数cは数値の10になるのですが
cの前にある&は参照外しの効果があるということなのでしょうか?
296デフォルトの名無しさん
2021/04/25(日) 12:30:46.33ID:yYRREqIx >>295
pattern matchとdestructuringでそうなる
3行目でbの型が&Tの場合に`&c`にマッチさせたらcの型はTになる
dereferenceの意味で「参照外し」と言ってるなら意味は違うかも
pattern matchとdestructuringでそうなる
3行目でbの型が&Tの場合に`&c`にマッチさせたらcの型はTになる
dereferenceの意味で「参照外し」と言ってるなら意味は違うかも
297デフォルトの名無しさん
2021/04/25(日) 13:38:30.57ID:rtrHqrCb >>296
横から失礼するけど、なるほど。
let &c = b;
は、C++の
int &c = b;
とはかなり違った解釈をされてしまうんだね。後者の場合、&は参照型の
記号で、cの型は、intへの参照型になる。Rustで似たことをしたいなら、
let c:&i32 = &b;
だったっけ?
横から失礼するけど、なるほど。
let &c = b;
は、C++の
int &c = b;
とはかなり違った解釈をされてしまうんだね。後者の場合、&は参照型の
記号で、cの型は、intへの参照型になる。Rustで似たことをしたいなら、
let c:&i32 = &b;
だったっけ?
298デフォルトの名無しさん
2021/04/25(日) 13:41:33.98ID:C031ZmfT String::fromとString::newの使い分けを教えてください
299デフォルトの名無しさん
2021/04/25(日) 15:13:55.60ID:3Jdhcm8q >>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
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
300デフォルトの名無しさん
2021/04/25(日) 15:19:02.60ID:yYRREqIx301デフォルトの名無しさん
2021/04/25(日) 15:31:18.79ID:2bakgkUg 意図もわからずなんとなく動くからそのメソッドを使い、借用をつければなんとなく動くから
借用し、変更する予定はないけどmutし、ここはエラーだからとpanic!し、補足するなと言われているのに
catch_unwind/recoverして、血の涙で泣きながら渡されたソースをシコシコ直すおまいら・・・
借用し、変更する予定はないけどmutし、ここはエラーだからとpanic!し、補足するなと言われているのに
catch_unwind/recoverして、血の涙で泣きながら渡されたソースをシコシコ直すおまいら・・・
302デフォルトの名無しさん
2021/04/25(日) 16:19:28.48ID:S2tV53BX303デフォルトの名無しさん
2021/04/25(日) 16:55:56.06ID:S2tV53BX >>302
C++で書き直すと、
int a = 10;
int *b = &a;
の状態だと、
int *c = b; か
int *c = &a;
で c を b と同じような「C++のポインタ型」の変数になる。
ということだね。
C++で書き直すと、
int a = 10;
int *b = &a;
の状態だと、
int *c = b; か
int *c = &a;
で c を b と同じような「C++のポインタ型」の変数になる。
ということだね。
304デフォルトの名無しさん
2021/04/25(日) 17:24:01.78ID:Ef2Yns/P >>301
割とこの未来はもう始まってるんだよな。。rust書き逃げは結構ある。。
割とこの未来はもう始まってるんだよな。。rust書き逃げは結構ある。。
305デフォルトの名無しさん
2021/04/25(日) 17:25:49.32ID:vrxr0D/D 悪用できない道具など無い
306デフォルトの名無しさん
2021/04/25(日) 17:30:22.71ID:VydP0zWV 構造体があるじゃん
a.b.cの更新参照もってて
同時に
a.b.dの更新参照とって
両方更新しようしたら
aの更新参照が2箇所にあることになるからできないの?
使い物にならんくない?
a.b.cの更新参照もってて
同時に
a.b.dの更新参照とって
両方更新しようしたら
aの更新参照が2箇所にあることになるからできないの?
使い物にならんくない?
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
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★7 [七波羅探題★]
