docs.rs failed to build actr-framework-0.1.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build:
actr-framework-0.1.5
actr-framework
Actor-RTC core programming interface layer - defines the contract for user-framework interaction.
Architectural Positioning
actr-framework is the SDK interface layer of the actr system, positioned in the middle tier:
User Application (Workload implementation)
↓ depends on
actr-framework (this crate) ← Stable API contract (trait definitions only)
↓ depends on
actr-protocol ← Data type definitions
↑ implements
actr-runtime ← Runtime implementation (implements Context trait)
Core Responsibilities
- Define user programming interface:
Workload,MessageDispatchertraits - Define execution context interface:
Contexttrait (implemented by runtime) - Type-safe RPC:
Context::call()andContext::tell()methods - Lifecycle management:
on_start,on_stophooks
Design Principles
1. Interface-only, Zero Implementation
// ✅ Framework defines
// ✅ Runtime implements
Framework contains no implementation code, all logic is in runtime.
2. Dependency Inversion Principle
- Framework defines traits, Runtime implements traits
- User code only depends on framework, not runtime
- Context trait can be mocked for unit testing
3. Zero-Cost Abstraction
- Use generics instead of trait objects (
<C: Context>not&dyn Context) - Compile-time monomorphization, static dispatch
- Compiler can fully inline the entire call chain
- Zero virtual function call overhead
Core Type System
4-Trait Architecture
actr builds a type-safe message handling system with 4 traits:
┌─────────────────────────────────────────────────────────┐
│ 1. RpcRequest trait (actr-protocol) │
│ - Associates Request and Response types │
│ - Provides route_key() static method │
└─────────────────────────────────────────────────────────┘
↓ used by
┌─────────────────────────────────────────────────────────┐
│ 2. Concrete Handler trait (code generated) │
│ - e.g., EchoServiceHandler<C: Context> │
│ - async fn echo<C: Context>(&self, req, ctx: &C) │
└─────────────────────────────────────────────────────────┘
↓ wrapped by
┌─────────────────────────────────────────────────────────┐
│ 3. MessageDispatcher trait (this crate) │
│ - Static routing: route_key → handler method │
│ - Zero-sized type (ZST), zero runtime overhead │
└─────────────────────────────────────────────────────────┘
↓ associated with
┌─────────────────────────────────────────────────────────┐
│ 4. Workload trait (this crate) │
│ - Associates Dispatcher type │
│ - Provides actor_type(), on_start(), on_stop() │
└─────────────────────────────────────────────────────────┘
Usage Example
use ;
// Code-generated Handler trait
// User implements business logic