pipecircuit-cli 0.0.2

Command-line architectural tools for Pipecircuit programs
#![no_std]

//! The named inventory is complete or construction fails.
//!
//! ```compile_fail,E0063
//! use __PROJECT_CRATE___program::{counting, pipes::Client};
//! use pipecircuit::InstalledPipe;
//! let incomplete = counting::Pipes {
//!     client: InstalledPipe::<Client, _>::new(()),
//! };
//! ```
//!
//! Matching Rust values do not authorize installing the wrong nominal pipe.
//!
//! ```compile_fail,E0308
//! use app_core::{domain_primitives::Count, state_machines::Counter};
//! use __PROJECT_CRATE___program::pipes::{Counting, CounterAuthority, Request, Reply};
//! use pipecircuit::{Inline, InstalledPipe, Pipe};
//! struct OtherCounting;
//! impl Pipe for OtherCounting {
//!     type In<'a> = Request;
//!     type Out<'a> = Reply;
//! }
//! let counter: InstalledPipe<Counting, Inline<CounterAuthority, Counting>> =
//!     InstalledPipe::new(Inline::for_pipe::<OtherCounting>(CounterAuthority::new(
//!         Counter::new(Count::ZERO),
//!     )));
//! ```

pub mod pipes;
pub mod switchboard;

pipecircuit::pipe_roster! {
    pub mod counting {
        client: crate::pipes::Client,
        counter: crate::pipes::Counting,
    }
}

pub use switchboard::CounterProgram;

#[cfg(test)]
mod tests;