La biblioteca Rust connections (cmk/connections) implementa las conexiones de Galois como valores de primera clase para realizar conversiones entre tipos parcialmente ordenados —por ejemplo, de f64 a f32, de Duration a segundos o de f32 a u32 y de ahí a IpAddr—. El objetivo declarado es superar las limitaciones del operador as y de los traits From/Into del estándar, que ofrecen una única dirección, son silenciosos respecto al redondeo, la saturación o la pérdida de precisión y, en muchos casos, ni siquiera conservan la equivalencia tras una conversión de ida y vuelta (por ejemplo, (x como f32) como f64 != x para muchos x de tipo f64).
El tipo central es Conn<A, B, K>, una pareja de funciones monótonas (f, g) etiquetada con un parámetro K que puede ser L (adjunción izquierda, con métodos ceil y upper) o R (adjunción derecha, con floor y lower). Un Conn es Copy, construible en tiempo de compilación, no usa heap y la crate aplica #![forbid(unsafe_code)]. La operación compose! encadena Conns por pares en tiempo de compilación en un único Conn<Src, Dst> que hereda por construcción las propiedades Galois de sus componentes.
La biblioteca incluye familias generadas para enteros de ancho fijo, formatos Q, NonZero e isomorfías entre crates, además de utilidades como median o round. Cada operación lleva un invariante validado con property-based testing y, para las familias de enteros y formatos Q, arneses de Kani que permiten demostraciones SMT a nivel de bit. La cobertura SMT sobre coma flotante es más estrecha y se documenta explícitamente. La versión mínima de Rust soportada es 1.88, y los incrementos del MSRV se tratan como cambios menores (de 0.1 a 0.2). El proyecto reexporta además dos heurísticas de uso —"elevar a través del Conn" y "componer en el sitio de llamada"— para conservar las garantías estáticas cuando se combinan conversiones con lógica adicional.
