Expand description
Per-surface trait abstractions for the plugin registry.
This module is filled during Phase 4 of the §1.1 consolidation pass. It
introduces the SurfaceKind enum and four family traits
(NamedUniqueSurface, VersionedSurface, KeyedUniqueSurface,
AppendSurface) that collapse the 25 surfaces in crate::registry
to a handful of generic patterns.
§Phase 4 status
Phase 4 is complete: the 25 surfaces dispatch through the family-ops
traits in this module. crate::registrar::PluginRegistrar enqueues
Box<dyn DynPendingRegistration> payloads; PluginRegistry::apply_pending
calls preflight then apply per payload; PluginRegistry::remove_plugin
walks the per-family PluginRecord fields and dispatches to
*Ops::remove / AppendOps::remove_plugin. The legacy
PendingRegistration enum and its three 25-arm matches are gone.
§Family overview
| Family | Storage shape | Example surfaces |
|---|---|---|
| Named-unique | DashMap<QName, Arc<Entry<K, Sig, P>>> | Scalar, Aggregate, Window, … |
| Versioned | DashMap<QName, Vec<Arc<Entry<…>>>> | Procedure (arity overload) |
| Keyed-unique | DashMap<K, Arc<dyn Provider>> | IndexKind, StorageBackend, … |
| Append | ArcSwap<Vec<Arc<dyn Provider>>> | Hook, OptimizerRule, … |
Append- and keyed-unique-family providers carry their key inside the
trait (e.g. crate::traits::collation::CollationProvider::name); the
KeyedUniqueSurface::key_of hook lets the registry derive a key from
the provider when no explicit key is passed at registration time.
Structs§
- Aggregate
Surface - Marker for the Aggregate surface. See
NamedUniqueSurface. - Algorithm
Surface - Marker for the Algorithm surface. See
NamedUniqueSurface. - Append
Entry - Owner-tagged append entry stored in append-family slots.
- Auth
Surface - Marker for the Auth surface. See
AppendSurface. - Authz
Surface - Marker for the Authz surface. See
AppendSurface. - Background
JobSurface - Marker for the BackgroundJob surface. See
AppendSurface. - Catalog
Surface - Marker for the Catalog surface. See
KeyedUniqueSurface. - CdcSurface
- Marker for the Cdc surface. See
KeyedUniqueSurface. - Collation
Surface - Marker for the Collation surface. See
KeyedUniqueSurface. - Connector
Surface - Marker for the Connector surface. See
AppendSurface. - Crdt
Surface - Marker for the Crdt surface. See
KeyedUniqueSurface. - Hook
Surface - Marker for the Hook surface. See
AppendSurface. - Index
Kind Surface - Marker for the IndexKind surface. See
KeyedUniqueSurface. - Label
Storage Surface - Marker for the LabelStorage surface. See
KeyedUniqueSurface. - Locy
Aggregate Surface - Marker for the LocyAggregate surface. See
NamedUniqueSurface. - Locy
Predicate Surface - Marker for the LocyPredicate surface. See
NamedUniqueSurface. - Logical
Type Surface - Marker for the LogicalType surface. See
KeyedUniqueSurface. - Operator
Surface - Marker for the Operator surface. See
NamedUniqueSurface. - Optimizer
Rule Surface - Marker for the OptimizerRule surface. See
AppendSurface. - Pregel
Surface - Marker for the Pregel surface. See
NamedUniqueSurface. - Procedure
Surface - Marker for the Procedure surface. See
VersionedSurface. - Replacement
Scan Surface - Marker for the ReplacementScan surface. See
AppendSurface. - Scalar
Surface - Marker for the Scalar surface. See
NamedUniqueSurface. - Storage
Backend Surface - Marker for the StorageBackend surface. See
KeyedUniqueSurface. - Trigger
Surface - Marker for the Trigger surface. See
AppendSurface. - Window
Surface - Marker for the Window surface. See
NamedUniqueSurface.
Enums§
- Discriminator
- Discriminator that distinguishes overloads sharing one
QName. - Surface
Kind - Enumeration of the 25 plugin surfaces.
Traits§
- Append
Surface - Append family:
ArcSwap<Vec<Arc<dyn Provider>>>. - Keyed
Unique Surface - Keyed-unique family:
DashMap<K, Arc<dyn Provider>>. - Named
Unique Surface - Named-unique family:
DashMap<QName, Arc<Entry<K, Sig, P>>>. - Versioned
Surface - Versioned family:
DashMap<QName, Vec<Arc<Entry<K, Sig, P>>>>.