A URID is basically a number which represents a URI, which makes the identification of other features faster and easier. The mapping of URIs to URIDs is handled by a something that implements the Map trait. A given URID can also be converted back to a URI with an implementation of the Unmap trait. However, these implementations should obviously be linked.
This struct has an optional type parameter T which defaults to (). In this case, the type can represent any URID at all, but if T is a UriBound, the instance of URID<T> can only describe the URID of the given bound. This makes creation easier and also turns it into an atomic URIDCollection, which can be used to build bigger collections.
Create a URID without checking for type or value validity.
This value may only be a URID the mapper actually produced and that is recognised by a compatible unmapper. Therefore, it should only be used by Map::map_uri or Map::map_type.
A URID may not be 0 since this value is reserved for the None value of Option<URID<T>>, which therefore has the same size as a URID<T>. If T is also a URI bound, the URID may only be the one that is mapped to the bounded URI.
Since these constraints aren’t checked by this method, it is unsafe. Using this method is technically sound as long as raw_urid is not zero, but might still result in bad behaviour if its the wrong URID for the bound T.