pub struct Cap;Expand description
Capability Registry 全局 facade,对齐 Ai facade 模式。
使用 OnceLock<CapInstance> 全局单例,所有静态方法通过 instance() 获取后委托给内部 CapabilityRegistry。
§使用方式
use sz_rust_capability::Cap;
Cap::init().ok(); // 初始化(仅需一次)
let metrics = Cap::metrics().unwrap();Implementations§
Source§impl Cap
impl Cap
Sourcepub fn init_with(registry: Arc<CapabilityRegistry>) -> CapResult<()>
pub fn init_with(registry: Arc<CapabilityRegistry>) -> CapResult<()>
使用外部 registry 初始化全局 facade(与调用方共享同一实例)
业务应用(如 sz300)持有自己的 Arc<CapabilityRegistry> 用于注入
AppState 时,应使用本方法而非 Cap::init——否则全局 facade 与
应用局部 registry 是两个独立实例,Cap::register 注册的能力
无法被业务 handler 访问(2026-08-15 双实例缺陷修复)。
pub fn init() -> CapResult<()>
pub fn is_initialized() -> bool
pub fn register( cap: Arc<dyn Capability>, ) -> CapResult<Option<Arc<dyn Capability>>>
pub fn unregister(name: &str) -> CapResult<Option<Arc<dyn Capability>>>
pub fn get(name: &str) -> CapResult<Option<Arc<dyn Capability>>>
pub fn search(query: &str) -> CapResult<Vec<Arc<dyn Capability>>>
pub fn list_all() -> CapResult<Vec<Arc<dyn Capability>>>
pub fn list_by_source( source: CapabilitySource, ) -> CapResult<Vec<Arc<dyn Capability>>>
pub async fn call(name: &str, args: Value) -> CapResult<Value>
Sourcepub async fn call_with_tenant(
name: &str,
args: Value,
tenant_id: i64,
) -> CapResult<Value>
pub async fn call_with_tenant( name: &str, args: Value, tenant_id: i64, ) -> CapResult<Value>
调用能力,携带租户上下文用于权限检查。
Sourcepub fn set_permission_checker(
checker: Arc<dyn PermissionChecker>,
) -> CapResult<()>
pub fn set_permission_checker( checker: Arc<dyn PermissionChecker>, ) -> CapResult<()>
设置权限检查器。
pub fn metrics() -> CapResult<CapMetrics>
pub fn len() -> CapResult<usize>
pub fn is_empty() -> CapResult<bool>
Auto Trait Implementations§
impl Freeze for Cap
impl RefUnwindSafe for Cap
impl Send for Cap
impl Sync for Cap
impl Unpin for Cap
impl UnsafeUnpin for Cap
impl UnwindSafe for Cap
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more