Struct dochy_core::intf::mitem::MItemPtr [−][src]
#[repr(C)]pub struct MItemPtr { /* fields omitted */ }
Implementations
&mut MutItemから得たポインタであれば、constであってもmutにキャストして&mut参照を得て書き換えても良い &から得たポインタを通じて書き換えるとUB。&mut参照を構築することすらもUBではないかという説もあるが、それは違うと思う &mut参照と&参照が同時に存在することもかなりUB的であるが、それも厳密には違うように思う。 ただし、このシステムは参照を露出しないので、シングルスレッドアプリにおいて同一メモリアドレスに2つ以上の参照が構築されることはないはず マルチスレッド化はArc::make_mutを用いて行われるので、マルチスレッドで同一アドレスへのアクセスが有る場合、 &mutを得る時はmake_mutによりコピーが行われるので、&mutと&参照がかぶることもないはず このPtrが正しくラップされ、ライフタイムルールが壊れていなければ、シングルスレッドにおいて&mut と &が同時に存在することは出来ないが、 そもそもそれ以前に参照を露出しなければ、シングルスレッドでは参照を複数存在させることは基本的に無理である
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for MItemPtr
impl UnwindSafe for MItemPtr
Blanket Implementations
Mutably borrows from an owned value. Read more