refactor(core): split typed_api.rs and move its inline tests out

Abierto
#460 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Refactorización
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
rust

Línea de trabajo

Start with aimdb-core/src/typed_api.rs and its inline tests, then inspect aimdb-core/src/typed_record.rs and aimdb-core/src/session/client.rs to understand the module conventions and feature gates. Split the typed API concerns into the suggested modules, preserve public paths, and reorganize the tests around shared mocks; assess whether typed_record's gated blocks can use internal helpers. Done when the files are easier to navigate and the refactor introduces no behavior change.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

🏗️ core enhancement

Problem

A few aimdb-core modules have grown well past the size where they are easy to navigate or review.

  • aimdb-core/src/typed_api.rs — 3,748 lines. The non-test part (lines 1–1783) holds five separate concerns: Producer<T> (104), Consumer<T> (226), RecordRegistrar (468), OutboundLinkBuilder (917) and InboundLinkBuilder (1241). The remaining ~1,960 lines are one inline mod tests containing five hand-written mock trait impls whose methods are unimplemented!("not needed for … tests") (lines 1837, 1861, 2968, 3062, 3261).
  • aimdb-core/src/typed_record.rs — 1,726 lines, 54 cfg(feature …) gates, the highest gate density in the workspace, plus four #[allow(unused_mut)] (858, 1167, 1203, 1279) that exist only because of those gates.
  • aimdb-core/src/session/client.rs — 1,685 lines (tests from line 1013).

Suggested work

  1. Turn typed_api.rs into a typed_api/ module: producer.rs, consumer.rs, registrar.rs, link_outbound.rs, link_inbound.rs, re-exported from mod.rs so the public paths do not change.
  2. Move the inline tests into per-concern test modules and share one mock connector/runtime between them instead of five partial mocks.
  3. For typed_record.rs, look at whether the gated blocks can be grouped behind a small number of internal helper functions so the unused_mut allows disappear.

No behaviour change intended; purely a move/re-organise refactor.

Notes

Line numbers are from the tree at d9c7be0. Sizes were measured with wc -l; the split points are the first top-level #[cfg(test)] in each file.

Lenguaje dominante
Rust
Estrellas
101
Forks
20
Merge medio
2 h 33 min
PR fusionados (30 d)
90

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de aimdb-dev/aimdb

Todos los issues de aimdb-dev/aimdb

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.