WIP: switch to announcement, remove extract input mess

This commit is contained in:
swaits committed 2025-10-14 09:01:28 -06:00
1 parent 82cbf15b85
commit 6de4d43db1
48 files changed
+685 -1187

No files matched your search

+1 -1
View File
@@ -30,7 +30,7 @@
//! Result: 5
//! ```
use dagx::{task, DagRunner, Task};
use dagx::{task, DagRunner};
// Step 1: Define a source task (no dependencies)
//
+1 -1
View File
@@ -55,7 +55,7 @@
//! Squared: 100
//! ```
use dagx::{task, DagRunner, Task};
use dagx::{task, DagRunner};
// Source task with a value field
struct Source {
+1 -1
View File
@@ -61,7 +61,7 @@
//! Active: true
//! ```
use dagx::{task, DagRunner, Task};
use dagx::{task, DagRunner};
struct FetchName;
+21 -11
View File
@@ -52,7 +52,7 @@
//! This proves dagx runs tasks on multiple CPU cores simultaneously.
//! ```
use dagx::{task, DagResult, DagRunner, Task};
use dagx::{task, DagResult, DagRunner};
use std::time::{Duration, Instant};
use tokio::time::sleep;
@@ -144,22 +144,32 @@ async fn main() -> DagResult<()> {
};
// ============================================================================
// SEQUENTIAL EXECUTION: Run the same 4 tasks one after another
// SEQUENTIAL EXECUTION: Run tasks one at a time in separate DAG executions
// ============================================================================
println!("Running SEQUENTIAL computation (same work, one at a time)...");
let (sequential_time, sequential_result) = {
let start = Instant::now();
// Run tasks sequentially (not using DAG, just raw execution)
let task1 = ComputeSum::new(1, 251, WORK_DELAY);
let task2 = ComputeSum::new(251, 501, WORK_DELAY);
let task3 = ComputeSum::new(501, 751, WORK_DELAY);
let task4 = ComputeSum::new(751, 1001, WORK_DELAY);
// Run each task separately to force sequential execution
let dag1 = DagRunner::new();
let sum1_handle = dag1.add_task(ComputeSum::new(1, 251, WORK_DELAY));
dag1.run(|fut| { tokio::spawn(fut); }).await?;
let r1 = dag1.get(sum1_handle)?;
let r1 = task1.run(()).await;
let r2 = task2.run(()).await;
let r3 = task3.run(()).await;
let r4 = task4.run(()).await;
let dag2 = DagRunner::new();
let sum2_handle = dag2.add_task(ComputeSum::new(251, 501, WORK_DELAY));
dag2.run(|fut| { tokio::spawn(fut); }).await?;
let r2 = dag2.get(sum2_handle)?;
let dag3 = DagRunner::new();
let sum3_handle = dag3.add_task(ComputeSum::new(501, 751, WORK_DELAY));
dag3.run(|fut| { tokio::spawn(fut); }).await?;
let r3 = dag3.get(sum3_handle)?;
let dag4 = DagRunner::new();
let sum4_handle = dag4.add_task(ComputeSum::new(751, 1001, WORK_DELAY));
dag4.run(|fut| { tokio::spawn(fut); }).await?;
let r4 = dag4.get(sum4_handle)?;
let result = r1 + r2 + r3 + r4;
let elapsed = start.elapsed();
+1 -1
View File
@@ -150,7 +150,7 @@
//! Result 7: Ok("Success")
//! ```
use dagx::{task, DagRunner, Task};
use dagx::{task, DagRunner};
use std::sync::Arc;
use std::time::Instant;
use tokio::sync::Mutex;
+1 -1
View File
@@ -66,7 +66,7 @@
//! Combined: 6 items, sum=57, avg=9.50
//! ```
use dagx::{task, DagResult, DagRunner, Task};
use dagx::{task, DagResult, DagRunner};
// Extract: Load data from different sources
struct LoadData {
+1 -1
View File
@@ -55,7 +55,7 @@
//! Expected: Categories: [low, invalid, high]
//! ```
use dagx::{task, DagResult, DagRunner, Task};
use dagx::{task, DagResult, DagRunner};
// Task that validates and processes input
struct ValidateAndDouble {
+1 -1
View File
@@ -75,7 +75,7 @@
//! ============================
//! ```
use dagx::{task, DagRunner, Task};
use dagx::{task, DagRunner};
// Data source tasks
struct LoadValue1;
+1 -1
View File
@@ -114,7 +114,7 @@
//! FulfillOrder: 30ms
//! ```
use dagx::{task, DagRunner, Task};
use dagx::{task, DagRunner};
use std::time::Instant;
use tokio::time::{sleep, Duration};
+1 -1
View File
@@ -114,7 +114,7 @@
//! === Error Handling Example Complete ===
//! ```
use dagx::{task, DagRunner, Task};
use dagx::{task, DagRunner};
// Source task that provides a string input
struct StringSource(&'static str);
+1 -1
View File
@@ -109,7 +109,7 @@
//! - Memory overhead is minimal (~ 200 bytes per task)
//! ```
use dagx::{task, DagRunner, Task};
use dagx::{task, DagRunner};
use std::time::Instant;
// Simple computation task
+1 -1
View File
@@ -47,7 +47,7 @@
//! This proves TRUE PARALLEL EXECUTION!
//! ```
use dagx::{task, DagRunner, Task};
use dagx::{task, DagRunner};
use std::time::{Duration, Instant};
use tokio::time::sleep;
+1 -1
View File
@@ -152,7 +152,7 @@
//! Result: Err("Retry exhausted after 3 attempts: Connection timeout")
//! ```
use dagx::{task, DagRunner, Task};
use dagx::{task, DagRunner};
use tokio::time::{sleep, Duration};
// Retry strategy configuration
+1 -1
View File
@@ -98,7 +98,7 @@
//! === Timeout Example Complete ===
//! ```
use dagx::{task, DagRunner, Task};
use dagx::{task, DagRunner};
use tokio::time::{sleep, timeout, Duration};
// Fast task that completes quickly
+1 -1
View File
@@ -33,7 +33,7 @@
//! - **ERROR**: Errors, panics, cycle detection
//!
use dagx::{task, DagRunner, Task};
use dagx::{task, DagRunner};
use tracing_subscriber::{fmt, EnvFilter};
// Simple source task