vestige/crates/vestige-core/src
Jan De Landtsheer 194fc6e4c0 feat(embedder): swap async-trait for trait_variant + dyn adapter (0001c)
Mirror of the 0001a pattern for the Embedder side.

- embedder/mod.rs: LocalEmbedder is the source trait declared with native
  async-fn-in-trait. #[trait_variant::make(EmbedderSend: Send)] derives the
  Send-bounded variant that backends implement. A hand-written Embedder
  trait wraps each async method in BoxedEmbedderFuture<'a, T> and forwards
  sync methods through a blanket impl<T: EmbedderSend> Embedder for T, so
  Box<dyn Embedder> / Arc<dyn Embedder> stay dyn-safe -- trait_variant 0.1
  alone does NOT produce a dyn-safe variant (RPITIT), so the hand-written
  adapter is required.
- embedder/fastembed.rs: drop the #[async_trait::async_trait] attribute and
  retarget the impl block to EmbedderSend. Adjust the top-level use to
  bring EmbedderSend into scope (also keeps fastembed::tests' use super::*
  trait lookups working).
- lib.rs: export EmbedderSend alongside the existing Embedder /
  LocalEmbedder re-exports.

The async-trait Cargo dependency is dropped in a follow-up commit so the
manifest change stays visible on its own.

Verification: cargo test -p vestige-core --features embeddings,vector-search
(428) and --no-default-features (370) both green. cargo test --test
embedder_trait green (2/2 including Box<dyn Embedder> cast). cargo build
--workspace --release green. cargo clippy --workspace --features
embeddings,vector-search -- -D warnings clean. grep -rn async_trait crates/
returns zero.
2026-06-18 19:08:52 -05:00
..
advanced feat(merge-supersede): Phase 3 — diff-previewed, reversible merge/supersede controls (v2.1.25) (#75) 2026-06-12 12:55:31 -05:00
codebase fix(clippy): Rust 1.95 compatibility — sort_by_key + collapsible_match 2026-04-19 21:11:49 -05:00
consolidation feat(v2.0.5): Intentional Amnesia — active forgetting via top-down inhibitory control 2026-04-14 17:30:30 -05:00
embedder feat(embedder): swap async-trait for trait_variant + dyn adapter (0001c) 2026-06-18 19:08:52 -05:00
embeddings Release v2.1.23 Receipt Lock hardening 2026-05-27 19:03:16 -05:00
fsrs feat(v2.0.5): Intentional Amnesia — active forgetting via top-down inhibitory control 2026-04-14 17:30:30 -05:00
memory feat(mcp/system_status): add optional schema_introspection flag (#69) 2026-06-11 14:24:42 -05:00
neuroscience chore: remove 3,091 LOC of orphan code + fix ghost env-var docs 2026-04-23 03:18:53 -05:00
search feat(v2.0.5): Intentional Amnesia — active forgetting via top-down inhibitory control 2026-04-14 17:30:30 -05:00
storage feat(storage): swap async-trait for trait_variant + dyn adapter (0001a) 2026-06-18 19:08:23 -05:00
config.rs feat(config): Phase 2 Configurable Output — vestige.toml + output profiles (v2.1.26) 2026-06-15 13:51:50 -05:00
fts.rs v2.1.2 Honest Memory 2026-05-06 02:22:24 -05:00
lib.rs feat(embedder): swap async-trait for trait_variant + dyn adapter (0001c) 2026-06-18 19:08:52 -05:00