pub struct LoopNode {
pub name: String,
pub body: SubGraph,
pub continue_condition: Arc<dyn Fn(&State) -> bool + Send + Sync>,
pub max_iterations: usize,
}Expand description
循环容器 — 可选的高级语法糖。
推荐使用 edge_if 实现简单回跳。 LoopNode 适用于需要独立迭代计数
和独立熔断保护的封装场景(例如并行子任务中的局部循环)。
ⓘ
// 推荐:直接用有环图 + edge_if(更直观)
GraphBuilder::new("retry")
.edge_if("check", "agent", |s| !s.satisfied) // 回跳
.edge("check", "output") // 通过
// LoopNode:需要独立 max_iterations 时使用
LoopNode::new("loop", SubGraph { ... }, |s| !s.satisfied, max_iterations: 5)Fields§
§name: String§body: SubGraph§continue_condition: Arc<dyn Fn(&State) -> bool + Send + Sync>§max_iterations: usizeImplementations§
Trait Implementations§
Source§impl GraphNode for LoopNode
impl GraphNode for LoopNode
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 mut State,
) -> Pin<Box<dyn Future<Output = Result<NextStep, GraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
state: &'life1 mut State,
) -> Pin<Box<dyn Future<Output = Result<NextStep, GraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
执行节点逻辑(阻塞模式)。
Source§fn execute_stream<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 mut State,
_sink: &'life2 Sender<GraphEvent>,
span_id: SpanId,
) -> Pin<Box<dyn Future<Output = Result<StreamNodeResult, GraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute_stream<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: &'life1 mut State,
_sink: &'life2 Sender<GraphEvent>,
span_id: SpanId,
) -> Pin<Box<dyn Future<Output = Result<StreamNodeResult, GraphError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
执行节点逻辑(流式模式),将内部事件转发到 channel。 Read more
Auto Trait Implementations§
impl !RefUnwindSafe for LoopNode
impl !UnwindSafe for LoopNode
impl Freeze for LoopNode
impl Send for LoopNode
impl Sync for LoopNode
impl Unpin for LoopNode
impl UnsafeUnpin for LoopNode
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