タグ

2023年3月10日のブックマーク (2件)

  • Rustでsafeな連結リストをつくる試み

    前回の記事を書いてから、考えてるだけじゃだめだなとすこし書いてみたところいろいろわかった。 Rcによるリスト Rcはリファレンスカウントで管理できる。RcはWeakをつくれるので、たとえばnext方向にRcをつなげておき(先頭ノードはリスト体が保持)、prev方向へはWeakを持たせればいいのではないか? と考えてみたのだった。 やってみたところこの方針では書けないということがわかった。Rcの参照先は基的には更新ができない。ノードを追加したらprevやnextを書き換えないといけないけど、書き換えができない。書き換えをするには mutable なリファレンスを一時的に獲得する必要があるが、weakも含めたリファレンスカウンタが1でないといけない(これは安全性のためだろう)。prevとnextで基的にノードにはstrongが1つとweakが1つ常にあるので、mutableなリファレンス

    Rustでsafeな連結リストをつくる試み
    masterq
    masterq 2023/03/10
    "double-linked-listをsafe Rustの範囲内で作るのはどうも無理っぽいというので正解という気がする"
  • Virtual I/O Device (VIRTIO) Version 1.1

    This prose specification is one component of a Work Product that also includes: Example Driver Listing: https://docs.oasis-open.org/virtio/virtio/v1.1/csprd01/listings/ This specification replaces or supersedes: Virtual I/O Device (VIRTIO) Version 1.0. Edited by Rusty Russell, Michael S. Tsirkin, Cornelia Huck, and Pawel Moll. Latest version: https://docs.oasis-open.org/virtio/virtio/v1.0/virtio-v