godot-cell 0.1.1

Internal crate used by godot-rust
docs.rs failed to build godot-cell-0.1.1
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

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 wont 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 wont get invalidated by accesses to b.