#![allow(dead_code)]
use anyhow::Result;

/// Bounded, cancellable job executor (stub).
pub struct JobExecutor;

impl JobExecutor {
    /// Create a new executor handle.
    pub fn new() -> Self {
        Self
    }

    /// Submit a job placeholder.
    ///
    /// - `F` is any Future that yields `Result<T>`.
    /// - `_job` is unused for now (underscore silences warnings).
    pub async fn submit<F, T>(&self, _job: F) -> Result<T>
    where
        // Type F must be a Future, and when awaited it yields a Result<T>.
        // TS analogy: F extends Promise<Result<T>>.
        F: std::future::Future<Output = Result<T>>,
    {
        // TODO: queue, bound, cancel, and run
        unimplemented!("job executor submit not implemented")
    }
}