Add new...Clone CompilerExecutor From ThisOptimizationStack UsagePreprocessorASTLLVM IROpt PipelineDeviceRust MIRRust HIRRust Macro ExpansionGHC CoreGHC STGGHC CmmGCC Tree/RTLGNAT Debug TreeGNAT Debug Expanded CodeControl Flow Graph
自分は最近RustのROS2クライアントを書いていて、間に合えばこれについて記事を書こうと思ったのですが、案の定間に合わなかったので代わりに書いています. ROS2はROS (Robot Operating System)というPロボット用フームワークの後継で、ROSが抱えるいくつかの問題点を解消するため、互換性を完全に切って新たに作られたものです.問題点の一つに、言語毎のクライアントライブラリの実装の仕様が統一されていないというものがあり、ROS2ではrclcやrmw等のC言語ライブラリを用意し、各言語のクライアントライブラリはそれらをラップして実装することが求められています. こういった事情でRustのROS2クライアントを作るためには、FFIが必須です. と御託はさておき、FFIでよく使う文字列と配列の変換について書いていきます. 前提知識 FFIについては知っているものとします.知
let plugin: Box<dyn Plugin> = unsafe { let load_plugin: Symbol<unsafe extern "C" fn() -> Box<dyn Plugin>> = lib.get(b"load_plugin")?; load_plugin() }; let name: String = plugin.name(); println!("1 {} 2 = {}", plugin.operator(), plugin.calc(1, 2)); // drop(plugin); // (2) 上の方法でトレイトオブジェクトを扱うことは(コンパイルエラーを生じないため)一見問題ないように見えます。しかし、load_plugin の戻り値型を Box にしてしまっているせいで所有権がプラグインとローダ間で移動し、(1) においてプラグイン側のアロケ
「試して理解 Linuxのしくみ」 Amazonでは "[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識" という名前になっています。 著者の武内さんのハンドルネームから、sat本と呼ばれることも多い書籍です。 武内さんが配布されているCのコードはこちら、私がRustで書き直したコードはこちらにあります。 以下は、ポエムです。 本の感想 私自身は、Linuxやメモリにそれなりには興味を持っていたので、すごく目新しい内容は、それほど多くはありませんでした。けれども、読んで非常によかったと感じています。 「試して理解」と銘打っているとおり、書かれていることを実際に試して、理解を深められるようになっています。なんとなく聞いたことはあったけれど、実際試したことはなかったものを、実際に試すことができたのは本当によかったです。 なぜRustに移植したのか 持論として、「
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く