You'll notice that new is not a keyword or any special rust thing. It's actually a software design pattern called a smart constructor, and validation is part of the intent. Pattern wise putting this into a smart constructor and encapsulating changes to this value is, I believe, idiomatic.
IIUC rust does not have a type system where you can give numeric bounds. Creating one would likely mean you'd need to define all the maths, which is likely not worth it.