Start out with the range-matching regex This is going to be a big file, before we get a working version, let's just introduce the pieces in smaller chunks to make sure we explain each part. src/lib.rs ---------- We need to add the range module to our public interface. src/range.rs ------------ Our use of `lazy_static!` is similar to the way we used it in version parsing. The main differences are we now look for an operation before the major version, and each of the major, minor, and patch versions can be either a number or a wildcard. There is no matching for build tags, either. Apparently build tags are not to be used on range specifications...or are they?