Rust part26

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2024/09/20(金) 22:18:38.38ID:c48cFuZJ
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

公式ドキュメント
https://www.rust-lang.org/learn

Web上の実行環境
https://play.rust-lang.org

※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/

※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust

※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/

※次スレは原則>>980が立てること

前スレ
Rust part25
https://mevius.5ch.net/test/read.cgi/tech/1722354386/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
552デフォルトの名無しさん
垢版 |
2024/10/30(水) 19:07:03.61ID:Fmew5Rd7
循環参照後から無くすって、ちょっとしたリファクタリングのレベルを超えているだろ
そのレベルの清書をマジでやるのか?
やらずにそのコードをそのままバグバグしい負債としてプロダクトに直接埋め込むんだろうどうせ

なら最初から循環参照なしで始めておこう
2024/10/30(水) 19:41:43.03ID:kddcnuFp
循環参照の問題は意図せず起こってしまうことだと思うが
リンクリストとか特定のデータ構造はたいした問題じゃない
なんかポイントがずれてないか?
554デフォルトの名無しさん
垢版 |
2024/10/30(水) 20:10:19.86ID:uApvZesn
>>522
でも速くて安全なんてキャッチフレーズ持ってるから、経営者が希望しそうな言語ではあるので将来的に現在のJavaみたいな立場の言語になりそうなのよね。>Rust
(そういえば、当時のJavaも…ゲフンゲフン)
2024/10/30(水) 20:14:02.88ID:1vbcRrkY
>>534
OCamlはRustよりもライブラリ揃っていなくてcargoのような簡易な環境もなくてコミュニティも小さくて実行速度も遅くて今から導入するメリットがなくてね
2024/10/30(水) 20:23:49.98ID:MMvZ6qnB
>>554
クラウド時代となってCPUとメモリ両方の利用リソース量がコストに直結するようになったのも大きい
オンプレミスでもハード削減や電気代減少となるため速く動く言語への移行は進むだろう
以前は扱いやすく安全な速い言語がなかったところにRustが現れた
2024/10/30(水) 20:23:51.06ID:rkQwQTjo
implするときにtrait側の境界より厳しい境界を設定するとE0276エラーになるけど、緩くても特に何も言われないんだな
しかし別にそのトレイトメソッドを緩い条件で呼べる訳ではないという
なんかlintないんかねこれ
2024/10/30(水) 20:39:06.44ID:o3z0lAnP
>>556
ほんとそれ。
昔はマシン一台あたりの I/O (通信やデータベース) に対して CPU やメモリが余ってたから実行速度なんてそんなに気にしてなかった。
クラウド時代になって使ったリソース分で課金されるようになると削れる部分は削らざるをえなくなるよな。
なにせ金額は経営陣にも理解できる数値だから。
2024/10/30(水) 21:54:35.32ID:WNH1hJk/
>>523
>>522 です
リプありがとうございました

その後の他のレスも併せて、もう少し粘って学習を続けてみようと思いました
大変励みになりました
ありがとうございました!!
2024/10/30(水) 22:39:28.15ID:aKzR4n7A
超大規模のシステムを運用してるんじゃなければ
Rustを使うことによるクラウド費用の削減効果なんて
人件費で軽く吹き飛んで負債になりまくりだろ
2024/10/30(水) 23:07:53.41ID:1vbcRrkY
そう思う人は遅い言語を使ってクラウド料金たくさん払えばよい
2024/10/30(水) 23:47:20.95ID:k59ANI4a
CPU時間と実メモリ使用量で課金されるのはFaaS系だけって話前にもしたじゃん
2024/10/30(水) 23:59:51.69ID:qFWovamr
>>562
タイムシェアリングシステムではCPU時間で課金される
2024/10/31(木) 03:34:36.66ID:DLPRJH+s
自分の所は年間億単位のサーバー費用がかかるし開発も数年かかるんでrustに置き換えるのは十分元取れる。皆c++組めるんでrust教えるのも難しくない。

既に稼働中の部分を組み直す価値があるかは難しい所。Googleのように新機能の部分からrustで書いていくのがいいかな。
565デフォルトの名無しさん
垢版 |
2024/10/31(木) 12:55:27.39ID:POJr+rF8
541 が循環参照されてる
566デフォルトの名無しさん
垢版 |
2024/10/31(木) 14:32:08.16ID:OWKccF9V
Tokioチュートリアルをやっているんだけどさ
チュートリアルの本題とは違うものの、TcpListener::bind()やOSの仕組みがわからなくてすまんが教えてくれねえか
https://tokio.rs/tokio/tutorial/spawning
ここで出てきたんだけど、これってアドレスにリスナーをバインドしただけではなぜnetstat -aの結果には出てこないの????
2024/10/31(木) 14:46:55.34ID:baPJOvwr
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=220e62ef9b9cbfa9a15d1cdd2547de6b

ぜんぜんわからない
俺たちは雰囲気でライフタイムを書いている
2024/10/31(木) 14:57:44.52ID:baPJOvwr
https://github.com/rust-lang/rust/issues/100728

あっこれかあ
fn(T) -> Uとかimpl Fn(T) -> Uはいいけどトレイトオブジェクトにすると全部非変になっちまうのか
ダルいなあこりゃ
569デフォルトの名無しさん
垢版 |
2024/10/31(木) 15:19:43.08ID:z7RNZZm9
循環参照が無いなら
UAFは無くなるからだよ
馬鹿専用言語だと思った
2024/10/31(木) 15:41:44.65ID:rdZbiqu1
C言語だと、伝統的にはポインタを多用することで高速化が図られている。
その場合、循環参照はよく起きる。但し、その事に配慮してメモリーブロック(オブジェクト)を
destruct するようにしてあるので、特に問題ないし、馬鹿な設計でもない。
その方が速度効率が上がるためだから。
2024/10/31(木) 17:20:18.37ID:ZEhuzsit
参照カウントの場合の循環参照の話だから
C言語じじいは無理して入ってこなくていいよ
2024/10/31(木) 18:04:25.22ID:rdZbiqu1
>>571
参照化カウント方式のポインタで循環参照させる人は、そりゃ珍しいだろうよ。
2024/10/31(木) 22:06:07.79ID:sM0Z2pjW
>>570
そのまとめてブロックでメモリ確保して一気に返す方法はRustや他の言語でも使われている普通の方法
2024/10/31(木) 22:08:28.63ID:sM0Z2pjW
まとめて解放するため循環参照があってもまとめて解放される
2024/10/31(木) 22:57:51.93ID:DLPRJH+s
C言語で出来る事はRustでも出来るよという事がイマイチ浸透していない気がする。
カスタムのメモリアロケーターも作れるし、GC欲しければ自分で実装するか、人が作ったクレート使えばいいし。
循環参照の管理が難しいならそういうシステム最初に作るでしょ?
576デフォルトの名無しさん
垢版 |
2024/10/31(木) 23:23:13.46ID:iDB9JYHh
GC自作とかいう大二病しぐさは大学生のうちに卒業しておけよ
2024/10/31(木) 23:37:38.88ID:DLPRJH+s
>>576
仕事で普通に使うぞ。
用途決まってれば別に特別でもない。
2024/10/31(木) 23:50:49.71ID:Vd3VQsE1
まとめてメモリ解放の究極版として
常駐プログラムでないなど単発処理プログラム対象だと
Rustはleak()を使ってライフタイムの'static化つまりプログラム終了まで解放しない宣言することでプログラミングが簡易になるよ
Cで一部をfreeしないのと同じことだね
2024/11/01(金) 00:52:09.22ID:YZO2XE1P
C言語で出来ることの大部分は実はRustでは出来ない。
2024/11/01(金) 00:52:09.90ID:YZO2XE1P
C言語で出来ることの大部分は実はRustでは出来ない。
2024/11/01(金) 01:18:56.49ID:MT2bV/S9
longjmpとか?
2024/11/01(金) 01:28:27.65ID:YZO2XE1P
いや。ほとんどのデータ構造とアルゴリズムが、Rustでは効率良く使用不可能。
2024/11/01(金) 01:34:16.91ID:3Qm9+gDD
>>578
おいおい、Cでexitするときにfreeすべきか否かの論争はまだ決着がついてないぞ
勝手に決めつけるな
2024/11/01(金) 03:23:25.98ID:eE8SKVMG
rustのgcって型に情報はみ出てんじゃん
ローカルでしか使えんし
585デフォルトの名無しさん
垢版 |
2024/11/01(金) 05:52:59.83ID:0qsWeWDL
RustにGC無いよ
2024/11/01(金) 08:50:35.34ID:wlON8pP2
>>579
激遅でいいんならRustで出来るだろ
2024/11/01(金) 09:12:07.99ID:gzsDik24
libcクレート使えば、CとそっくりのRustプログラムできるでしょ
588デフォルトの名無しさん
垢版 |
2024/11/01(金) 11:20:36.22ID:7FgA9x/Y
>>577
作りたいから作ってるだけだろ
仮に委託先がGC作成費用請求して来たらブチ切れて契約切るわ
2024/11/01(金) 18:44:17.66ID:DQt7FtoO
>>579
名前空間が無いからってマクロで識別子を生成するのはもう勘弁してください
2024/11/01(金) 18:49:49.50ID:I9IxltIy
GCついてるRustが欲しい
rustのtraitシステムは好きだが静的メモリ安全性まではいらない
2024/11/01(金) 19:00:04.84ID:0wzgx2ON
>>590
ちょっと探したらGc機能を提供するクレートたくさんあったよ。
どれが良いのかは知らん。
592デフォルトの名無しさん
垢版 |
2024/11/01(金) 19:25:45.68ID:FTeJ4swx
まともなGCライブラリなんかないよ
おとなしくRustらしいコードを書くか、Rustをやめるかだ
2024/11/01(金) 21:49:04.02ID:lqBEgicJ
>>583
freeやdeleteは不要
freeせずにプログラムが終了したり落ちたりしてもメモリリークは起きない
2024/11/01(金) 22:49:51.10ID:XWaTPxZT
>>592
だよな
2024/11/01(金) 23:32:34.62ID:Y/NQYWW3
>>593
メモリリークするかどうかはOSやアロケータ依存
2024/11/01(金) 23:58:44.68ID:zgZjB7HD
>>593
お前、組込みソフトの開発したことないだろ

あ、俺もなかったわ
2024/11/02(土) 00:41:46.39ID:3NvQMTDb
>>593
メモリリークチェッカーが反応してしまうから、今時きちんと解放処理書くから
不要とかそういうのは前時代的だぞ
2024/11/02(土) 01:36:59.35ID:tAgBVlMI
Tと&TとRc<T>を区別できるのは静的型付けの成果なんだよな

LispがすべてをGCの対象にするのは型を宣言しないからだし
それに、副作用のある関数とない関数を「型」で区別できなかったから
すべてが純粋な関数だったら (動的型でも) 分かりやすいという話になった
2024/11/02(土) 04:46:39.55ID:3NvQMTDb
成果でもなんでもない
言語的にそうせざるをえないだけ
型で区別するのはいいことばかりじゃない
2024/11/02(土) 07:03:08.78ID:tAgBVlMI
技術の話をたまにしかしない人達に
技術は善いことばかりじゃないと説教するのは的外れすぎるだろ
2024/11/02(土) 07:06:40.35ID:3NvQMTDb
技術的な話をしてるから的外れ
型の弊害の経験ないからピンとこない
2024/11/02(土) 09:53:55.89ID:+GKIPsT4
enumで解消
2024/11/02(土) 14:38:12.14ID:tAgBVlMI
とりあえず両極端を経験してみるのはじつは拙速で、巧遅でも清書でもない
どっちも弊害があると語る第三者が最も遅いのだ
2024/11/02(土) 23:52:01.28ID:aIv/CPhG
>>595
それはむしろ逆
freeを完全にすることでメモリリークを防ぐことはできない
freeはアロケータが管理するメモリバッファへ返還する動作しかしない
malloc/free交互にするたびにそのバッファをゼロにするためOSやその他システムへバッファを返還する非効率をしない
アロケータが管理するバッファはfree後も常に一定量が残っている
つまりバッファを完全にシステム側に返還する責務をfreeは持たないしfreeで実現は無理だ
そこは各システムが別の機構として責務を持っている
普通のOSならプロセス終了でバッファ含めて使用メモリ全体を自動解放することになる
組み込みシステムでもそのプログラム終了時に少なくともバッファ部分を解放する仕組みを持たなければならない
freeを忘れてもあるいはfreeせぬまま異常終了となってもその仕組みによりメモリリークは起きない
2024/11/03(日) 01:07:42.39ID:GP4mHnVt
>>604
君が想定している仕組みや振る舞いが
あらゆるOSやアロケータに当てはまるわけではないんだよ

>>595に戻る
606デフォルトの名無しさん
垢版 |
2024/11/03(日) 08:19:11.87ID:OLDVpvrl
まともなOSならfreeせずに終了しても問題が起こらないように作ってあるよ
そうしないと異常終了のようなケースでリークし続けることになるし
(古いものやマイナーなものも含めた全てのOSがそうだとは言い切れないけど)

その上でだけど、上記はOSの動作の問題であって、言語のルールとしては「mallocしたら対になるfreeを呼ぶこと」だろうから、自分の好みとしてはfreeをちゃんと呼ぶよう作りたい派
「OSが解放するから問題ない」というのは「プログラマが責任をサボっても問題は起こらない」という感じがしてて、行儀の良いコードでないように感じる
2024/11/03(日) 08:27:05.14ID:vgT2G1ym
mallocしたら対になるfreeを呼ばずに終了するのはマナー違反
目上のOSに対して失礼に当たる
2024/11/03(日) 08:32:32.56ID:muWl0Gle
こういうやつに限って問題が起きると「想定外でした」と恥ずかしげもなく言うんだよな
609デフォルトの名無しさん
垢版 |
2024/11/03(日) 08:32:33.64ID:W/WQS3jI
メモリリークが問題になるのは、むしろ終了させずに長期間稼働させ続ける場面でのことだと思うが…。
特に鯖とか医療機器・自動車組み込みなど、経済・人命に影響が大きい分野。
2024/11/03(日) 08:37:43.84ID:vgT2G1ym
>>609
そういう分野では、そもそも動的にメモリ確保しない
2024/11/03(日) 09:04:30.66ID:DnnuC4NT
動的確保をしないものもあればするものもある
自分の知ってる範囲が世の中の全てだと勘違いしないことだな
612デフォルトの名無しさん
垢版 |
2024/11/03(日) 09:25:18.11ID:OLDVpvrl
医療機器や自動車ほど重要なものではないけど、自分の仕事だと組込みでも動的確保を使うよ
Windows EmbeddedやUbuntuようなOSが入ってるし、それなりのリソースがある環境での話だけど
「大きなバッファはプログラムの最初に1度だけ確保する」ことはするけど、それ以降のヒープ確保をしないとか、static領域のみを使うとかまではしてない
(Rustスレでいうのもなんだけど現状はC++)

一般化できる話かは分からないけど、例えばカメラを使う機器かつ複数種類のハードウェアを扱うプログラムなら動的確保は必要じゃない?
想定するカメラ画像のうち最も大きいサイズに合わせたメモリを静的確保する作りでも良いと思うけど、プログラム起動後にハードウェアに問い合わせて、それを元に必要分のバッファを確保する作りも多いと思う
2024/11/03(日) 10:22:36.62ID:e8fWHn4Q
>>612
確実にメモリ不足が起こらないこと保証できるのそれ?
まあ動くっしょ?ダメなら再起動で、みたいな感じ?
品質に対する意識すごいね
2024/11/03(日) 11:21:00.89ID:wZ/A1hEq
mallocが駄目ならsbrkを使えば良いじゃない。by マリー
2024/11/03(日) 11:34:52.74ID:8jL1esrh
> malloc/free交互にするたびにそのバッファをゼロにするためOSやその他システムへバッファを返還する非効率をしない

なんやこの悪文は
2024/11/03(日) 11:49:46.99ID:kGU90lSm
>>609-610
手術中にGC走り出したら困るもんなー
2024/11/03(日) 11:52:19.67ID:kGU90lSm
>>615
chatGPTに聴いて造らせたような文章だな
2024/11/03(日) 13:59:19.14ID:yWge6Gp+
ChatGPTはそんな変な文を作らない。
2024/11/03(日) 16:50:47.89ID:zQdSfX4F
MS-DOSですら、free忘れようが何しようが、
プロセス終了時にちゃんとOSがプロセスが確保した
メモリーを解放してたよ。
2024/11/03(日) 17:05:19.83ID:zQdSfX4F
なんせ、MS-DOSのように「意味的には」ページングして無い場合には、
メモリー解放はOS目線で見れば簡単と言えば簡単だからね。
for ( プロセスが確保していたメモリーブロックを全て巡る ) {
 (そのメモリーを解放);
}
みたいなロジックであって。
WindowsやLinuxのようなOSでは、ページングや色々なこと
してるから複雑だけど、それでもOSは頑張って解放するよ。
621デフォルトの名無しさん
垢版 |
2024/11/03(日) 17:20:04.38ID:X/+mpRk0
素人質問で大変恐縮ですが、CPU/GPUのファームウェアをrustで書くことは可能?
622デフォルトの名無しさん
垢版 |
2024/11/03(日) 17:46:00.06ID:OLDVpvrl
>>613
>確実にメモリ不足が起こらないこと保証できるのそれ?
それは悪魔の証明に近くないか?
保証はできないけど、普通に使う分には使えてるものだよ
人命に関わるような分野ではない&長時間 (例えば24時間以上) 連続で動かす機器ではないという条件だけど

「組込みでは動的確保をしてはならない」と言うなら、例えば組込みJetsonなんて製品が世に存在するわけがないでしょ
あれはNVIDEAのGPUを積んでて、CUDAを使った処理などを行える機器だけど、組込み向けとして売られてる
GPUメモリの確保は当然動的確保になるわけで
623デフォルトの名無しさん
垢版 |
2024/11/03(日) 18:50:54.75ID:W/WQS3jI
>>621
デバイスドライバって意味なら書ける。
https://qiita.com/lalafell/items/be50f696a35fc6dbce62

win以外
ラズパイのキーボードファームウェアの記事。
https://zenn.dev/nazo6/articles/keyball-embassy-rp2040

こんな調子でCPUやGPUも理論的には行けるはず。
Googleはある程度道筋経ててるみたいね。

C/C++からRustへ:Googleが示すファームウェア進化の道筋
https://xenospectrum.com/google-revamps-firmware-with-rust/
Googleは最近、Android仮想化フレームワークの保護された仮想マシン用ファームウェアをRustプログラミング言語で書き直し、その経験をもとに他の開発者にも、“メモリセーフ”な言語である、Rustへの移行を強く推奨し、ブログでその詳細を解説している。
624デフォルトの名無しさん
垢版 |
2024/11/03(日) 18:52:21.77ID:XxnHrPnR
Linuxなんて勝手にプロセス殺して知らんぷりする糞OSですし
625デフォルトの名無しさん
垢版 |
2024/11/03(日) 18:56:19.56ID:W/WQS3jI
>>619
話聞いてた?
free忘れで問題になるのは、そのプロセスを数か月/数年単位で終了させない時に出る。
終了時にメモリ解放されるのは当たり前。
626デフォルトの名無しさん
垢版 |
2024/11/03(日) 19:43:19.04ID:X/+mpRk0
>>623
ありがとうございます
2024/11/03(日) 20:51:25.90ID:e8fWHn4Q
>>622
動的確保をするなではなくメモリ不足にならないことを保証しろだ
お前の周りの組み込み機器でメモリ不足エラー見たことあるか?
まともな会社でまともなスキル身につけたほうがいいぞ
2024/11/03(日) 21:09:49.26ID:X/+mpRk0
Staticこそ至高
629デフォルトの名無しさん
垢版 |
2024/11/03(日) 21:34:55.27ID:OLDVpvrl
>>627
書いた通り、大きなメモリ (主に画像用) は最初に必要分を確保して使い回してるし、当然そのサイズは機器の搭載RAMサイズを考慮しているよ
処理によっては一時的なメモリ確保は生じるけど、適切に解放してるしメモリリークしてるわけでもない

組込みって分野が広いし、あくまでこれは自分の分野の話だというのは念頭においてくれ
メモリが32KBしかないマイコンと、8GBや16GBのメモリを積んでる機器とでは条件が全然違う
リソースが限られていたり、24時間360日動くような機器なら動的確保を避けろというのはその通りだと思う
630デフォルトの名無しさん
垢版 |
2024/11/03(日) 21:46:04.58ID:OLDVpvrl
>24時間360日
これは365日の誤字
2024/11/03(日) 22:22:34.29ID:etptyyzP
>>607
普通のプログラマーが対象とする普通のOS環境においてfree()とOSは関連がない
そしてfree()せずにプログラムが終了してもメモリリークは起きない
関係するのプログラム動作中にメモリの再利用ができないことでメモリを使い果たさないかどうかのみだ

つまりGCに頼る言語でGCが起きる以前にプログラム実行が終わってしまうようなタイプのプログラムなら同様にfree()を行わなくても構わない
起動時にまとめてメモリを確保して終了時まで放さないタイプでもfree()を行なう必要はない
free()を行なわないことでプログラミングをより平易かつ安全にすることができる
2024/11/03(日) 22:34:17.00ID:tj8/H5Bl
結論:
複オジが対象としているタイプのプログラムではfree()を行なわないことでプログラミングをより平易かつ安全にすることができる
以上。
633デフォルトの名無しさん
垢版 |
2024/11/03(日) 22:50:04.49ID:JgJhJeSd
freeしないコードのコードレビューはしたくないな
こだわりが強そうだし、本当に安全なのか確かめるのも大変
634デフォルトの名無しさん
垢版 |
2024/11/03(日) 23:14:53.65ID:/IbdFPbo
>>633
freeしなければダングリングも多重解放なども起こらないから絶対に安全だよ
freeしていると安全なのか確かめるのが難しくなる
2024/11/04(月) 01:39:27.51ID:nRSMDwEy
freeを使ってないがreallocは使ってるみたいな
敵視してない敵がいる
つまり敵味方は自由に選べないので、同意してないコストを強制されることもある
636デフォルトの名無しさん
垢版 |
2024/11/04(月) 02:53:23.37ID:Bn72OgcT
Rustの話を、しよう
2024/11/04(月) 14:38:06.42ID:dJ1Yp7fe
>>634
安定の複オジ品質
草草草
2024/11/04(月) 14:59:59.47ID:IyJSMCPH
お話してから、しましょう
2024/11/04(月) 16:28:27.25ID:613UlU6B
>>637
いや俺はそいつとは違うが絶対安全なのは事実
2024/11/04(月) 17:33:20.85ID:Jcd4tSdQ
何が絶対安全なの?
2024/11/04(月) 17:41:55.51ID:P+qabS46
>>639
いや完全に脳みそ複オジでしょ
2024/11/04(月) 18:04:13.97ID:mBJjb45a
>>566
亀レスだけどアドレスにリスナーをバインドすればnetstat -aの結果にLISTEN状態で出てくるぞ
2024/11/04(月) 18:21:55.56ID:613UlU6B
>>641
型システム入門って読んだことないん?
13章で確保した参照を絶対解放しない言語考えてその型安全性(つまりメモリ安全)証明しているけどこれ言っても理解できん?
2024/11/04(月) 18:36:09.56ID:+Zn5uplp
そんなイキれるほど頭のいいこと言ってないから
freeしなきゃ安全!
はずいわ
2024/11/04(月) 18:36:26.40ID:0co8NUe7
そりゃ安全ではあるけど別の大問題を生むし……
わざわざそれを言ってるのって「Cであえて解放しないようにするとC++/RustでRAIIに任せるのと比べて(誤差レベルで)早い」って意見に対してくだらない意地張ってるだけじゃないですか
2024/11/04(月) 18:45:22.71ID:UYP+oEN0
>>643
#include <stdio.h>

int main() {
int x;
printf("%d\n", x);
return 0;
}

↑freeしてないけどメモリ安全ではないよ
何が安全なのか知らんけど
2024/11/04(月) 19:51:08.05ID:3WEWZAvC
>>644
引用文献載せるだけの行為に過剰反応するとかコンプでもあるんかな?
帰納法とか理解できないからこの本読めなくて可哀想w
2024/11/04(月) 19:52:09.07ID:3WEWZAvC
>>645
俺は寿命が短時間なのか想定されるプログラムで敢えてfreeしないアプローチを取るのは賛成やが
2024/11/04(月) 19:52:59.06ID:3WEWZAvC
>>646
この本ではdangling pointerのエラーについては発生しないこどメモリ安全だと主張している
2024/11/04(月) 21:16:42.38ID:nRSMDwEy
RAIIより単純なアプローチがもしあればRAIIは非科学的だぞという
このオッカムの剃刀自体が、科学的な実験やデータを必要としない哲学の思想だ
2024/11/04(月) 21:43:03.80ID:C+a/rILf
>>636
Rustでももちろん意図的に解放しない有用な方法を公式にサポートしている
これはヒープ領域の一部を解放しないことにして例えばスタティック領域のようにみなすことができる
つまりライフタイムを'staticにできるため構造体メンバーに制約なく組み込めて関数からも自由に返せるようになる
この機能はsafeなRustの標準ライブラリとして提供されている
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況