/** Dynamic Ownership and borrowing á lá Rust at run-time instead of compile-time.

    TODO: Override all members with write checks. See
    http://forum.dlang.org/post/mailman.63.1478697690.3405.digitalmars-d-learn@puremagic.com

    TODO: Perhaps disable all checking (and unittests) in release mode (when
    debug is not active), but preserve overloads sliceRO and sliceRW. If not use
    `enforce` instead.

    TODO: Implement and use trait `hasUnsafeSlicing`

    TODO: Add WriteBorrowedPointer, ReadBorrowedPointer to wrap `ptr` access to
    Container

    TODO: Is sliceRW and sliceRO good names?

    TODO: can we make the `_range` member non-visible but the alias this public
    in ReadBorrowed and WriteBorrowed
 */
module nxt.borrown;

public import nxt.owned;
public import nxt.borrowed;