A an alternative to Range<T> that has a defined memory layout, implements
[std::marker::Copy], and has some convenience methods.
use Span;
let text = "hello world";
let s = from;
for i in s
// Because `Span` is copyable, we can reuse it without calling `clone`
assert_eq!;
assert_eq!;
This is also useful for making copyable datastructures that contain ranges.
use Span;
use Range;
let val = default;
takes_val; // If `HoldSpan` wasn't `Copy`, `val` would be moved into this function
expects_range;