"it's just an adapter from internal API to one operating on `int`s, i.e. `Ok()` will be converted to `0`, and an error will be converted to another number", it may cost more memory if using 2 type systems simultaneously. Rust Result can use Box to allocate errors with unknown size on heap, whereas int is fixed-size, they may be incompatible due to unknown size and fixed-size.