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.macros/provides public macro entrypoints and endpoint bundles.
The default flow is: endpoints → workflow → policy → ops → model.
Re-exports§
pub use dto::error::Error as PublicError;pub use dto::error::ErrorCode;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.
- ids
- Layer-neutral identifiers and boundary-safe primitives.
- log
- macros
- Public macro entry points used across Canic.
- perf
- Cross-cutting performance instrumentation.
- protocol
Macros§
- auth_
require_ all - Enforce that every supplied rule future succeeds for the current caller.
- auth_
require_ any - Enforce that at least one supplied rule future succeeds for the current caller.
- build
- Embed the shared Canic configuration into a canister crate’s build script.
- build_
root - Embed the shared configuration for the root orchestrator canister.
- canic_
endpoints - canic_
endpoints_ nonroot - canic_
endpoints_ root - 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
- perf
- Log elapsed instruction counts since the last
perf!invocation in this thread. - start
- Configure lifecycle hooks for non-root Canic canisters.
- start_
root - Configure lifecycle hooks for the root orchestrator canister.
- timer
- timer Schedule a one-shot timer with an auto-generated label.
- timer_
guarded - timer_guarded Schedule a one-shot timer if none is already scheduled for the slot. Returns true when a new timer was scheduled.
- timer_
interval - timer_interval Schedule a repeating timer with an auto-generated label.
- timer_
interval_ guarded - timer_interval_guarded Schedule an init timer that installs a repeating timer for the slot. Returns true when a new timer was scheduled.
Constants§
- CRATE_
NAME - Crate Version
- VERSION