pub struct FnBehavior<F> { /* private fields */ }Implementations§
Source§impl<F> FnBehavior<F>
impl<F> FnBehavior<F>
Sourcepub fn new(id: BehaviorId, pattern: EventPattern, f: F) -> Self
pub fn new(id: BehaviorId, pattern: EventPattern, f: F) -> Self
Examples found in repository?
examples/behavior_subscription.rs (lines 12-31)
8async fn main() -> Result<(), Box<dyn std::error::Error>> {
9 let state = YoAgentState::load(MemoryEventStore::new()).await?;
10 let mut runtime = YoAgentRuntime::new(state.clone());
11
12 runtime.register_behavior(FnBehavior::new(
13 BehaviorId::new("behavior_failure_to_task"),
14 EventPattern::Kind("failure.observed".to_string()),
15 |_ctx: BehaviorContext, event: Event| async move {
16 let title = event
17 .payload
18 .get("title")
19 .and_then(|value| value.as_str())
20 .unwrap_or("Investigate failure");
21 Ok(vec![StateOp::CreateNode {
22 id: NodeId::new("task_from_failure"),
23 kind: "task".to_string(),
24 props: json!({
25 "title": format!("Investigate: {title}"),
26 "status": "Open",
27 "created_by_behavior": "behavior_failure_to_task",
28 }),
29 }])
30 },
31 ));
32
33 runtime
34 .emit_event(Event::new(
35 ActorRef::agent("demo"),
36 "failure.observed",
37 json!({ "title": "retry timeout loses state" }),
38 ))
39 .await?;
40
41 print!(
42 "{}",
43 state
44 .lineage(NodeId::new("task_from_failure"))
45 .await
46 .to_markdown()
47 );
48 Ok(())
49}Trait Implementations§
Source§impl<F, Fut> Behavior for FnBehavior<F>
impl<F, Fut> Behavior for FnBehavior<F>
fn id(&self) -> BehaviorId
fn pattern(&self) -> EventPattern
fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: BehaviorContext,
event: &'life1 Event,
) -> Pin<Box<dyn Future<Output = Result<Vec<StateOp>, StateError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Auto Trait Implementations§
impl<F> Freeze for FnBehavior<F>where
F: Freeze,
impl<F> RefUnwindSafe for FnBehavior<F>where
F: RefUnwindSafe,
impl<F> Send for FnBehavior<F>where
F: Send,
impl<F> Sync for FnBehavior<F>where
F: Sync,
impl<F> Unpin for FnBehavior<F>where
F: Unpin,
impl<F> UnsafeUnpin for FnBehavior<F>where
F: UnsafeUnpin,
impl<F> UnwindSafe for FnBehavior<F>where
F: UnwindSafe,
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