Expand description
Core Canic library used inside canisters.
Most users should depend on the canic facade crate, which re-exports this crate
under canic::core and exposes the common entrypoint macros:
canic::build!/canic::build_root!(inbuild.rs) to validate/embedcanic.tomlcanic::start!/canic::start_root!(inlib.rs) to wire lifecycle hooks and export endpoints
§Layering
Canic is organized to keep endpoint code thin and policies centralized:
access/contains guard/auth/rule helpers for boundary enforcement.workflow/implements orchestration and lifecycle workflows.policy/owns deterministic decision rules.ops/provides mechanical, reusable side-effecting operations.model/owns storage (stable memory) and in-process registries/caches.- macro entrypoints live in the
canicfacade crate.
The default flow is: endpoints → workflow → policy → ops → model.
Re-exports§
pub use ::canic_cdk as cdk;pub use ::canic_memory as memory;pub use ::canic_utils as utils;
Modules§
- access
- api
- Public API façade for canister endpoints.
- domain
- dto
- DTO boundary definitions.
- error
- ids
- Layer-neutral identifiers and boundary-safe primitives.
- log
- perf
- Cross-cutting performance instrumentation.
- protocol
Macros§
- eager_
init - Run
$bodyduring process start-up usingctor. - eager_
static - Declare a thread-local static and schedule an eager initialization touch.
- ic_
memory - Declare a stable-memory slot backed by the Canic memory registry.
- ic_
memory_ range - Reserve a contiguous block of stable-memory IDs for the current crate.
- log
Constants§
- CRATE_
NAME - Crate Version
- VERSION