Saltar al contenido

La librería, y qué esconde

Tres funciones para los tres sistemas: qué unifica bien, qué unifica mal y qué no puede unificar. Cómo leer sus errores sabiendo lo que hay debajo.

Lo básico

Rust
use keyring::Entry;let entrada = Entry::new("dev.wandres.miapp", "ana@ejemplo.com")?;entrada.set_password(&testigo)?;          // guardarlet t = entrada.get_password()?;          // leerentrada.delete_credential()?;             // borrar

Y eso funciona en los tres sistemas. La entrada se traduce a un elemento de llavero en macOS, a una credencial genérica en Windows y a un elemento con atributos en Linux; los identificadores que diseñaste en el nivel 34.3 encajan tal cual en los tres modelos.

Qué unifica bien

Las dos últimas filas son las que hay que tener presentes, y son justo las que un ejemplo de tres líneas no muestra.

Traducir sus errores

El trabajo que la librería no hace y que sale de los tres niveles anteriores: de una categoría de error a una causa concreta y un mensaje útil.

Cinco causas, tres mensajes distintos, un solo camino de recuperación. Ésa es la forma final de la capa del nivel 37.5.

Las opciones de compilación

Un detalle que decide más de lo que parece: la librería tiene características opcionales para elegir qué almacén usa en cada sistema, y sus valores por omisión pueden no ser lo que quieres.

Dos decisiones que merece mirar en tu proyecto:

  • En Linux, qué implementación se compila. Hay más de una vía posible para hablar con el servicio, y algunas arrastran dependencias del sistema que tu binario necesitará en la máquina del usuario. Es un detalle de empaquetado —fase X— que se decide aquí.
  • En macOS, si usas el llavero clásico o el moderno. Nivel 35.4. Por omisión, el clásico; si vas a la tienda de Apple, esto importa.

Y una regla general: activar solo lo que uses. Cada característica adicional es una dependencia más en el árbol del nivel 26.2, en la parte del árbol que corre con todos los permisos.