pub struct ContextForgeBuilder { /* private fields */ }Expand description
Builder for ContextForge.
The builder always pre-seeds DefaultEnglishScorer so plain-English
importance signals (“confirmed”, “we decided”, “never mind”, etc.) are
active without any additional configuration. A caller-provided persona
scorer is optional and stacks additively on top via
CompositeLexiconScorer.
§Example
use context_forge::{Config, ContextForge, ConfigLexiconScorer};
use std::path::PathBuf;
#[tokio::main]
async fn main() -> Result<(), context_forge::Error> {
let mut config = Config::default();
config.db_path = PathBuf::from("memory.db");
// English scorer only (most common case):
let cf = ContextForge::builder(config.clone()).build().await?;
// English + persona scorer loaded from a TOML string:
let toml = "[affirmations]\npatterns = [\"for the emperor\"]";
let persona: ConfigLexiconScorer = toml.parse()?;
let cf = ContextForge::builder(config).with_persona_scorer(persona).build().await?;
Ok(())
}Implementations§
Source§impl ContextForgeBuilder
impl ContextForgeBuilder
Sourcepub fn new(config: Config) -> Self
pub fn new(config: Config) -> Self
Create a new builder with the given config.
Prefer ContextForge::builder over calling this directly.
Sourcepub fn with_persona_scorer(self, scorer: impl LexiconScorer + 'static) -> Self
pub fn with_persona_scorer(self, scorer: impl LexiconScorer + 'static) -> Self
Stack a persona scorer on top of the always-on DefaultEnglishScorer.
The persona scorer is typically a crate::ConfigLexiconScorer loaded
from a domain-specific TOML file. Its boosts are summed with the English
layer; the engine applies a -1.0 floor after fusion.
Sourcepub async fn build(self) -> Result<ContextForge>
pub async fn build(self) -> Result<ContextForge>
Open the database and build a ContextForge with the configured scorer.
The DefaultEnglishScorer is always included. If
Self::with_persona_scorer was called, both scorers are composed via
CompositeLexiconScorer.
§Errors
Returns an error if the database cannot be opened or migrations fail.
Auto Trait Implementations§
impl !RefUnwindSafe for ContextForgeBuilder
impl !UnwindSafe for ContextForgeBuilder
impl Freeze for ContextForgeBuilder
impl Send for ContextForgeBuilder
impl Sync for ContextForgeBuilder
impl Unpin for ContextForgeBuilder
impl UnsafeUnpin for ContextForgeBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> Fruit for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more