pub struct DynModel(pub Arc<dyn Model>);Expand description
A concrete newtype wrapping a boxed model, so an Arc<dyn Model> can be used
where a concrete M: Model is required (e.g. Subagent::new / AgentLoop<M>).
We deliberately do NOT impl Model for Arc<dyn Model> directly. Doing so
changes .stream() method resolution on EVERY Arc<dyn Model> value in the
program (from a deref to dyn Model into the Arc impl’s async fn stream
RPITIT), and proving that boxed streaming future is Send inside a Send
context (e.g. an axum handler driving the streaming loop) overflows the
auto-trait solver (E0275). Wrapping in this concrete newtype gives callers
DynModel: Model without touching resolution for bare Arc<dyn Model>.
Tuple Fields§
§0: Arc<dyn Model>Trait Implementations§
Source§impl Model for DynModel
impl Model for DynModel
fn complete<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 Context,
) -> Pin<Box<dyn Future<Output = Result<ModelOutput, ModelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
DynModel: 'async_trait,
Source§fn stream<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 Context,
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<ModelDelta, ModelError>> + Send>>, ModelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
DynModel: 'async_trait,
fn stream<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 Context,
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<ModelDelta, ModelError>> + Send>>, ModelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
DynModel: 'async_trait,
Streaming is optional; default implementation falls back to
complete.fn info(&self) -> ModelInfo
Auto Trait Implementations§
impl !RefUnwindSafe for DynModel
impl !UnwindSafe for DynModel
impl Freeze for DynModel
impl Send for DynModel
impl Sync for DynModel
impl Unpin for DynModel
impl UnsafeUnpin for DynModel
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
Mutably borrows from an owned value. Read more