サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
ubnt-intrepid.netlify.app
@dalance 氏の記事で紹介されているプラグインシステムの抱える、相互運用性まわりの問題点を解消した仕組みを考えてみました。プラグインシステム自体の動機や、提供される機能の詳細については元記事を参照してください。 成果物: https://github.com/ubnt-intrepid/rust-plugin-example 元システムにおける問題点の整理 元記事のプラグインシステムでは、プラグインのインスタンスを Box<dyn Plugin> に変換した上でローダ側に転送し、ローダ側は受け取った Box<dyn Plugin> のインスタンスをそのまま用いています。 // プラグイン側 #[no_mangle] pub unsafe extern "C" fn load_plugin() -> Box<dyn Plugin> { Box::new(PluginAdd::defau
Rust Advent Calendar 2019 10日目の記事です。 本記事では、拙作の FUSE ライブラリである polyfuse を紹介します。 FUSE の概略 FUSE (Filesystem in Userspace) とは、ユーザ空間でファイルシステムを実装するための仕組みです。 本来ならカーネルモジュールとして実装する必要があるファイルシステムを(ユーザ空間で動作する)実行ファイルとして動作させることで、ファイルシステムを簡単に作成・配布することが出来るようになります。 同様の仕組みとして、NetBSD の puffs や、 WSL が Windows 側に rootfs を公開するためのプロトコルとして採用したことでも知られる 9P などがあります。 FUSE を用いたファイルシステムの実装として、SSH 経由でネットワーク越しにディレクトリをマウントする SSHFS
このページを最初にブックマークしてみませんか?
『missing documentation for life』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く