Is there reasoning behind it? Like to force bigger vaults to be split into multiple smaller ones? (which would decrease the avg vault size; resulting in even smaller vaults?)
Because you don’t want to accidentally mix multiple sizes in calculations. You don’t want to add a variable storing an amount in nanos to a variable storing an amount in micros then just assume the sum is a nano or micro amount.
The primary cause of this discrepancy was that one piece of ground software supplied by Lockheed Martin produced results in a United States customary unit, contrary to its Software Interface Specification (SIS), while a second system, supplied by NASA, expected those results to be in SI units, in accordance with the SIS. Specifically, software that calculated the total impulse produced by thruster firings produced results in pound-force seconds. The trajectory calculation software then used these results – expected to be in newton seconds – to update the predicted position of the spacecraft.
solution: use multiple types for each size that handle the size conversion implicitly
let sum = NanoCoin::from(1_000) + MicroCoin::from(20);
assert_eq!(sum, NanoCoin::from(21_000));
https://research.mozilla.org/2014/06/23/static-checking-of-units-in-servo