doc: update for next release
This commit is contained in:
1 parent
a13f148778
commit
766555bef4
24 files changed
+224
-878
No files matched your search
+3
-8
@@ -27,8 +27,6 @@ type ExecuteFuture =
|
||||
///
|
||||
/// This is the ONLY place where type erasure occurs - tasks are created with full type
|
||||
/// information and only erased at this trait boundary.
|
||||
///
|
||||
/// This is an implementation detail and not part of the public API.
|
||||
pub(crate) trait ExecutableNode: Send {
|
||||
/// Execute the task with type-erased inputs and output
|
||||
///
|
||||
@@ -43,14 +41,14 @@ pub(crate) trait ExecutableNode: Send {
|
||||
/// Fully-typed node storage for a single task.
|
||||
///
|
||||
/// Stores a task of type T. Implements ExecutableNode for type erasure,
|
||||
/// allowing heterogeneous tasks to be stored in a single Vec.
|
||||
/// allowing heterogeneous tasks to be stored together.
|
||||
///
|
||||
/// # Ownership Model
|
||||
///
|
||||
/// The task is owned directly (no Mutex needed) and consumed during execution.
|
||||
/// Each task executes exactly once, taking ownership and producing an output.
|
||||
///
|
||||
/// The output is also returned from execute_with_deps for central storage.
|
||||
/// The output is also returned from execute_with_deps to be passed to dependents and returned as an output
|
||||
pub(crate) struct TypedNode<Input, T>
|
||||
where
|
||||
Input: Send + Sync + 'static,
|
||||
@@ -84,14 +82,11 @@ where
|
||||
) -> ExecuteFuture {
|
||||
Box::pin(async move {
|
||||
// Use the task's run method which has inline extraction logic
|
||||
// generated by the #[task] macro. This allows ANY type to work without
|
||||
// requiring ExtractInput trait implementations.
|
||||
// generated by the #[task] macro.
|
||||
let output = self.task.run(TaskInput::new(dependencies.iter())).await;
|
||||
|
||||
// Arc Wrapping Strategy:
|
||||
// Wrap output in Arc ONCE for efficient fan-out sharing.
|
||||
// For 1:N dependencies, this enables O(1) sharing (Arc clone = atomic increment)
|
||||
// instead of O(N) cloning (N deep copies of output data).
|
||||
// Downstream tasks receive &T after extraction from Arc.
|
||||
let arc_output = Arc::new(output);
|
||||
|
||||
|
||||
Reference in new issue
Block a user