use lash_core::{PromptContribution, PromptLayer, PromptSlot, PromptTemplate};
pub trait PromptLayerSink: Sized {
fn prompt_layer_mut(&mut self) -> &mut PromptLayer;
fn prompt_template(mut self, template: PromptTemplate) -> Self {
self.prompt_layer_mut().template = Some(template);
self
}
fn prompt_contribution(mut self, contribution: PromptContribution) -> Self {
self.prompt_layer_mut().add_contribution(contribution);
self
}
fn replace_prompt_slot(
mut self,
slot: PromptSlot,
contributions: impl IntoIterator<Item = PromptContribution>,
) -> Self {
self.prompt_layer_mut().replace_slot(slot, contributions);
self
}
fn clear_prompt_slot(mut self, slot: PromptSlot) -> Self {
self.prompt_layer_mut().clear_slot(slot);
self
}
fn prompt_layer(mut self, layer: PromptLayer) -> Self {
*self.prompt_layer_mut() = layer;
self
}
}