The generics buy the ability to instantiate code with f32 (f32 and f64 are the only float types in Rust). However, queries in global coordinates (anything in ECEF, Web Mercator tile, S2 cell) require f64 precision anyway.
De facto everything is always f64 (see iterator.rs, including the query and point coordinate type), and changing it would require a bunch of refactoring anyway. This just makes it official :)
Code becomes nicer to read and maintain: Fewer trait bounds everywhere, no more nalgebra::convert() etc.
More things can be constants instead of run-time values, like std::f64::consts::PI instead of S::pi().
Why is this better?
nalgebra::convert()
etc.std::f64::consts::PI
instead ofS::pi()
.