I think there's a design tension in the library as it currently exists between providing low-level access to GMP primitives and high-level Rustic abstractions.
I think it could be good to split functionality (either internally or as two separate crates), between:
- Unsafe FFI bindings to C functions, with gnarly GMP-style names.
- High-level Rust abstractions with nice names, e.g.
Int instead of Mpz, Rational instead of Mpq, etc. No inappropriately low-level methods like Rational::set_f (prefer From, etc).
Happy to help implement this 😄
I think there's a design tension in the library as it currently exists between providing low-level access to GMP primitives and high-level Rustic abstractions.
I think it could be good to split functionality (either internally or as two separate crates), between:
Intinstead ofMpz,Rationalinstead ofMpq, etc. No inappropriately low-level methods likeRational::set_f(preferFrom, etc).Happy to help implement this 😄