fusion-core 0.1.0

A data fusion platform with scheduler, ai agent studio and core libraries
Documentation
# 编译期依赖注入

提供了一种特殊的 `Component`,它支持在编译期注入依赖的组件。

像下面的例子 `UserService` 只需派生 `Service` 特征,为了区分注入的依赖,你需要通过属性宏 `#[inject(component)]` 和 `#[inject(config)]` 指定依赖是一个 `Component` 还是一个 `Config`。

```rust
use std::sync::Arc;

use fusion_core::{application::Application, component::Component};

#[derive(Component, Clone)]
pub struct AuthSvc {
  #[component]
  user_svc: UserSvc,
  #[component]
  pwd_svc: PwdSvc,
}

#[derive(Clone, Component)]
pub struct UserSvc {
  #[component]
  db: Db,
}

#[derive(Clone, Component)]
pub struct PwdSvc {
  pwd_generator: Arc<PwdGenerator>,
}

// #[derive(Debug, Clone)]
// pub struct PwdSvc2 {
//   pwd_generator: Arc<PwdGenerator>,
// }

#[derive(Debug, Default)]
pub struct PwdGenerator {}

#[derive(Clone, Component)]
pub struct Db {}

#[tokio::main]
async fn main() ->fusion_core::Result<()> {
  Application::builder().build().await?;

  let _auth_svc: AuthSvc = Application::global().component();

  // let _pwd_svc = PwdSvc2 { pwd_generator: Arc::default() };
  // println!("{:?}", _pwd_svc);

  Ok(())
}
```