docs.rs failed to build godot-cell-0.2.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build:
godot-cell-0.0.0
# Internal crate of [**godot-rust**](https://godot-rust.github.io)
Do not depend on this crate directly, instead use the `godot` crate.
No SemVer or other guarantees are provided.
# Contributor docs
A re-entrant cell implementation which allows for `&mut` references to be reborrowed even while `&mut`
references still exist.
This is done by ensuring any existing `&mut` references cannot alias the new reference, and that the new
reference is derived from the previous one.
This emulates rust's system for function calls. i.e `my_func(&mut borrowed)` creates a second `&mut`
reference inside the function.
Instead of directly using the concept of `aliasing` pointers, we use the term `accessible` instead. A
reference (or other pointer) to some value is considered accessible when it is possible to either read
from or write to the value it points to without using `unsafe`. Importantly, if we know that a reference
`a` is inaccessible, and then we create a new reference `b` derived from `a` to the same value, then we
know for sure that `b` won't alias `a`. This is because aliasing in rust is based on accesses, and if we
never access `a` then we cannot ever violate aliasing for `a` and `b`. And since `b` is derived from `a`
(that is, `b` was created from `a` somehow such as by casting `a` to a raw pointer then to a reference
`b`), then `a` won't get invalidated by accesses to `b`.