[表示 : 全て 最新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/

222 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 23:08:37.40 ID:y/lG5X/l.net]
研究目的だろうがそうでなかろうがわざと脆弱性を含むパッチを簡単にマージできている、という状況が問題なんであって
腹たつから大学出禁にしたった、とやったところで根本的な問題は何も解決しないんだけどlinuxのメンテナンスしてる連中とか
linusを筆頭にとか老害頭ばっかりだから自分がスッとすれはそれでいいんだろうな

223 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 23:21:38.67 ID:5b2Tg2Qr.net]
1) 善意でやってくれてる連中にケチつけんな
2) じゃあお前が根本的な解決とやらをやれ
3) もしくはその根本的な解決方法を彼らに教えてやれ

224 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 23:33:32.83 ID:Bg0clzlT.net]
しーぷらぷらあきらめてどろっぷあうとした
ちんちんぶらぶらまるはだかなひとたちが
らすとすぱぁとをきめるスレ

225 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 23:52:38.76 ID:KHhdvM96.net]
rust厨八つ当たりw

226 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 08:31:32.27 ID:yuX3+THA.net]
その脆弱性もUAFとかぬるぽデリファレンスとか未初期化領域の使用とか2重開放とか最近の言語じゃ明らかに

227 名前:意図してやらなきゃ起きないようなもんばっかだもんなぁ
そりゃC/C++にしがみついてる大先輩方にとっちゃ逆鱗だわな
[]
[ここ壊れてます]

228 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 08:34:12.76 ID:Lj3XxxY0.net]
そんなもんunsafeしまくれば同じだろ。。
そういう問題じゃないことくらいわかるだろうに、本当の馬鹿だな。

229 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 08:36:52.46 ID:+YpcBxgU.net]
C++とlinuxの話禁止な

230 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 08:52:11.81 ID:Lj3XxxY0.net]
rustでOSかける->linus、panicある限り載せねーよ->rust信者発狂



231 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 09:00:00.40 ID:5QBVXmI/.net]
発狂?むしろ歓迎
個人で使うようなアプリは好きなだけパニくれ
使われるアプリはパニくんなカス、これ常識だろ

232 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 10:42:10.47 ID:Lj3XxxY0.net]
言語実装的にもそうなってないよねって話なんだけど、なんだか通じてなさげ。

233 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 11:59:33.30 ID:bX8BaI1F.net]
rustにもgoのマスコットキャラみたいなのいないんですか?

234 名前:あめ mailto:sage [2021/04/23(金) 12:13:46.74 ID:hS4CVJbd.net]
かにさん

235 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 12:17:43.73 ID:E6ocica9.net]
>>214
>なんでカーネルの話してるのに言語ランタイムとプラットフォーム依存の話してるんだ?
カーネル内での例外を許すみたいな立場で話す人が居るから

例外メカニズムが言語ランタイムと不可分な理由は
>スタックのアンワインドは言語依存性が強いのでそうなっている (>>212

C言語みたいにそもそも例外メカニズムを持たない言語を使った場合のみ
言語ランタイムと切り離したカーネル設計ができてスキーリ

236 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 12:23:39.46 ID:Xbep6LJc.net]
>>219
だから、脆弱性を簡単に盛り込めないように危険な団体を排除しただけだろ。
普通の対応だと思うけど?

237 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 12:31:21.77 ID:+YpcBxgU.net]
>>231
> >なんでカーネルの話してるのに言語ランタイムとプラットフォーム依存の話してるんだ?
> カーネル内での例外を許すみたいな立場で話す人が居るから

いません
この話はおわり

238 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 12:56:09.67 ID:1/JMNo8Q.net]
「注意すればC/C++でも問題ない」って意見は日本的だよな
人間はミスしないことが前提になっている
Rust Foundationのメンバーに言わせればそういう問題ではない
人間はミスするものだってなるんだろうけど

239 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 13:00:34.48 ID:Lj3XxxY0.net]
そのミスの取り除き方のアプローチの違いだっていうことにさえ気づかない馬鹿。

240 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 13:33:15.21 ID:AZKiGQoD.net]
c++でミスするような無能はrustでも使ってろと怒鳴り散らす
これが正しいアプローチ



241 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 13:43:27.45 ID:M88Kc634.net]
>>229-230
なんで蟹なんだろうな。
PythonユーザーのことPythonistaって言うみたいに
RustユーザーのことRustaceanって言うけど、
これCrustacean(甲殻類)からCを取り除いたものなんだな。

242 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 14:28:40.04 ID:9+zMAQDa.net]
エビにしろよな
カニだとRealtekと被るじゃん

243 名前:デフォルトの名無しさん [2021/04/23(金) 14:58:40.99 ID:ntrIv3TW.net]
大半の人は、C/C++の文法がわかる程度でプログラムを書いているのが現状だろう
何がミスなのかそもそもわかっておらず、Rustを勉強している人と話も噛み合わない

244 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:01:12.26 ID:Lj3XxxY0.net]
c++とrustの部分入れ替えてもなんの違和感もない文章だね

245 名前:デフォルトの名無しさん [2021/04/23(金) 15:03:21.83 ID:ntrIv3TW.net]
君にはそう見えるだろうね

246 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:05:01.62 ID:Lj3XxxY0.net]
君にはそう見えないんだろうね

247 名前:デフォルトの名無しさん [2021/04/23(金) 15:05:59.83 ID:ntrIv3TW.net]
とりあえず、話が噛み合わないのはわかったでしょ

248 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:07:53.22 ID:9+zMAQDa.net]
C++ドロップアウターが希望を求めてやって来るスレ

249 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:13:29.93 ID:ECpnCXVF.net]
スレでグチグチ言うよりプログラム書いた方がよっぽど理解できるよ

250 名前:デフォルトの名無しさん [2021/04/23(金) 15:20:14.54 ID:ntrIv3TW.net]
C/C++で穴のあるコードを書いてもしょうがないし、それも難しいんじゃないのかな
逆にC/C++の人らがRustコンパイラをすり抜けるヤバいコードを提示してくれたら、一発で口だけじゃなく出来る人だったと示せるだろうが



251 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:28:23.22 ID:mq69qBnk.net]
>>155
> Rustに比べたC++の良さは雑に書けるところだって気付いた
> やっぱ雑が許されない巨大プロジェクトはRustで、小規模な自分用ツールの類はC++で書いてくことになりそうだ


これが何気に的を得てるでしょ
コンパイラが安全な方に導いてくれるのはもちろん良いとして、それよりも雑に (あるいは短く親しんだ方法で) 書きたい思惑が優先されるときは C/C++ でやれば良い話で

252 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:38:53.83 ID:CjhKTAAP.net]
いや、Rustでラクに書けない時点で勉強が不足してる
そのことに自分で気付けるような人だけRust使えばいい

「当を得る」か「的を射る」ことが出来るような人になってほしい

253 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:56:22.07 ID:mq69qBnk.net]
いや、単にコード長が C/C++ の方が短く書ける可能性高いでしょ
どんなイディオムを駆使しても

254 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:59:55.49 ID:mq69qBnk.net]
あと近年では「的を得る」は必ずしも誤用じゃないという見方が主流でしょ

255 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 19:45:46.49 ID:ECpnCXVF.net]
Rustの方が雑に書ける局面多いと思うけどなぁ

256 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 20:51:53.23 ID:+YpcBxgU.net]
C++ vs Rustスレでも作ってそっちでやってくれマジで
不毛すぎる

257 名前:デフォルトの名無しさん [2021/04/23(金) 21:04:58.31 ID:g6tU54WL.net]
>>249
そうだね、記述量の多い言語だと思う

258 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 22:37:03.61 ID:E6ocica9.net]
Rustのコンパイラと戦って勝ったコードは
シンプルでエレガントで簡潔なことが多い
らしい
mjk、

259 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 23:34:43.49 ID:KS/Kkucz.net]
linusはやっぱすげーな
洞察力が違うわ
もちろんその道の神的な存在とはいえ
たいして知らない言語の弱点を一瞬にして暴いて
論破できるのは凄い

260 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 01:08:35.83 ID:h5KFlu4v.net]
>>251
例えばどんなとき?



261 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 01:20:53.45 ID:vtdgUVMq.net]
どんなときもどんなときもRustがRustらしくある〜ために〜

262 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 08:06:24.96 ID:nPKzA798.net]
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/

立てましたので以降そういうのはこっちでお願いします

263 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 08:33:43.03 ID:AUtfiExa.net]
>>258
お前ずっと一人で「他所でやれ」連呼してる奴だろ
C++との対立構造はRustにとって無視できないテーマでしょ
正直C++とどう住み分けたら良いのかわかってない奴がほとんどなんだから

264 名前:デフォルトの名無しさん [2021/04/24(土) 08:39:09.80 ID:/opj2hnT.net]
C++とRustは対立なんてしてない
Rustが怖いC++お爺ちゃんがRustに噛みつているだけでしょ

265 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 08:48:20.99 ID:MAG7Rri7.net]
カーネルの件で完全に拗らせとるな

266 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 08:54:35.43 ID:8O98k7om.net]
> C++との対立構造はRustにとって無視できないテーマでしょ

お前のテーマなんてどうでもいいんだよ
よそでやってくれ

267 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 08:59:24.96 ID:MAG7Rri7.net]
一般的なテーマだってこともわからんのか。馬鹿だな。

268 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 09:02:59.11 ID:CqGuC/ho.net]
リナス「やっぱCが至高、C++もRustもクソ!」

269 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 09:13:04.98 ID:IM8zU0Pj.net]
rustもpanicをコアから外せればいけると思うのだが
もろ言語のコアなんだよな
痛いところ突かれた

270 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 10:06:12.73 ID:yJd/gJxx.net]
言語の問題じゃなくてライブラリの問題では



271 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 10:11:32.69 ID:vtdgUVMq.net]
へーpanicってライブラリなんだ

272 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 10:29:13.61 ID:nPKzA798.net]
>>259
仮にその対立構造を認めるにしても
「雑に書くならC++のほうが楽」なんて、曖昧で基準も何も示されない話に真面目に付き合う奴はいないよ
そういう奴らのための隔離スレとして用意したから好き放題書き散らせばいい

273 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 10:42:59.04 ID:2MdujosH.net]
コード長の話でしょ?
どー考えてもC++の方が短いよ
んなとこで張り合ってもしゃーない

274 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 11:44:33.91 ID:8fCyRscb.net]
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

275 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 12:07:10.57 ID:RPGHdVOi.net]
>>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/
==========

276 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 12:17:31.75 ID:HBFF7y2e.net]
Rustしかまじめに勉強したことないけどいい言語だと思うよ

277 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 12:21:15.48 ID:8fCyRscb.net]
>>272
C/C++で一度ひどい目にあわないとRustの良さは分からんよ
今はまだ分かった気になってるだけ

278 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 12:39:27.31 ID:aNHhbYgZ.net]
Rustはコンパイルでひどい目にあうから問題無い
同じことだ

279 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 12:56:02.52 ID:1Wwd5OE1.net]
Rustのコンパイラに怒られまくる奴は三流プログラマ

280 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 12:59:06.14 ID:hc4SaSPr.net]
Rustの文字列変数って、
str1 = str2;
のように書いた時、copyではなくmoveでしたっけ?



281 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:03:33.00 ID:kYV5ExS+.net]
String型ならmove、&str型ならcopy
文字列リテラルなら後者

282 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:09:43.73 ID:hc4SaSPr.net]
>>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 が使えなくなるのでちょっと違う。

283 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:13:27.35 ID:vtdgUVMq.net]
>>278
無駄なことに時間使ってないでthe bookくらい読みなよ

284 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:20:12.76 ID:hc4SaSPr.net]
>>
C# は、「b.」の系統で、JavaとRubyと似た動作だね。

285 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:23:38.54 ID:hc4SaSPr.net]
>>279
いろんな言語をかじってしまうと、どれがどれだか分からなくなってしまうんだよ。
文字列の s2 = s1 の動作は:
a. BASIC、JS、MFC、STL(C++)は似た動作。中身をコピーする。
b. Java、Ruby、C# が似た動作。参照を代入するだけ。コピーしたければ明示する。
c. Rustは、b の系統に似ているが、s1 が使えなくなる。

286 名前:デフォルトの名無しさん [2021/04/24(土) 13:27:17.48 ID:hc4SaSPr.net]
>>281
Javaの場合、Stringは参照しか出来ないが、Rustの場合は、「String型」だけでなく、
「Stringへの参照型」も使えるんだっけ (let s3:&String ??) ?

287 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:36:44.63 ID:hc4SaSPr.net]
>>281
C++11以降は、x = y と書いた時、y が捨ててよいと判断した場合は、
moveで、それ以外の時は copy。
一方、Rustだと、「デフォルト move」なので、基本的には move 動作。
cooy したければ、x = y.clone; と書くのかな。
色々ややこしい。

288 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:39:26.22 ID:glcm53ed.net]
>>283
> C++11以降は、x = y と書いた時、y が捨ててよいと判断した場合は、moveで、それ以外の時は copy。

そんな親切け???
左辺値同士だと明示しないとmoveしてくれないだろ
最適化次第ではしてくれるの?

289 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:43:36.80 ID:hc4SaSPr.net]
>>284
えっと、関数の戻り値が構造体型(or クラス型)の場合、右辺値と解釈されるので、
s2 = func(xxx);
見たいにした場合は自動的に move代入されたと思う。
それ以外だと、たいていは、s2 = std::move(s1); のように書かなければ
copy代入になるんじゃないかな。
s2 = func(xxx).s;
のようにした場合も move代入になるはず。
自信は無い。

290 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:47:10.36 ID:Kvw1J2lw.net]
>>285
RVOは全然違うぞ
s2の構築にコピーコンストラクタを使わなくなって早くなるというだけ
ムーヴコンストラクタはそもそも出てこない



291 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:47:25.73 ID:hc4SaSPr.net]
>>285
自分の記憶だと、一時オブジェクトも右辺値だから、
s2 = std::string("xxx");
ともし書いたとしたら、右辺は右辺値になるのでmove代入になるはず。
s2 = s3 + s4;
みたいにしても、右辺は関数の戻り地と解釈されるので右辺値になるので
move代入になるはず。

292 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 15:48:01.23 ID:QvmQEBVA.net]
Rustってコードをフォーマットしてくれる機能があるからいいね
これこそモダンな言語だと思う

293 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 16:01:24.29 ID:93XQhLV9.net]
C++と比べりゃ大抵の言語はモダンだろうよ

294 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 16:18:04.79 ID:rGfKetgv.net]
しーぷらぷらあきらめてどろっぷあうとした
ちんちんぶらぶらまるはだかなひとたちが
rustすぱぁとをきめるスレ

295 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 16:38:27.41 ID:MAG7Rri7.net]
lintツールも満足に使えない人が喜んでるのかね

296 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 17:14:02.73 ID:yJd/gJxx.net]
非Syncなデータに複数スレッドからアクセスするコードに警告だしてくれるlintある?

297 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 18:12:05.46 ID:6780eEd1.net]
へーそれコードをフォーマットしてくれる機能なんだ

298 名前:デフォルトの名無しさん [2021/04/24(土) 22:25:57.79 ID:EY30SvcB.net]
>>293
君は、松永の論文を読んだのかい?

299 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 11:06:21.68 ID:M4WxeD2J.net]
質問です

let a = 10;
let b = &a;
let &c = b;

としたときに変数cは数値の10になるのですが
cの前にある&は参照外しの効果があるということなのでしょうか?

300 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 12:30:46.33 ID:yYRREqIx.net]
>>295
pattern matchとdestructuringでそうなる
3行目でbの型が&Tの場合に`&c`にマッチさせたらcの型はTになる
dereferenceの意味で「参照外し」と言ってるなら意味は違うかも



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で書けばいいってか。馬鹿すぎる発想だな。






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

前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