forgy

Crates.ioforgy
lib.rsforgy
version0.1.0
created_at2025-01-26 04:49:57.883622+00
updated_at2025-01-26 04:49:57.883622+00
descriptionDerive macro for building dependency graphs.
homepagehttps://docs.rs/forgy
repositoryhttps://github.com/shelbyd/forgy
max_upload_size
id1531047
size9,959
Shelby Doolittle (shelbyd)

documentation

https://docs.rs/forgy

README

forgy

Derive macro and traits for building dependency graphs. Simple dependency injector.

use std::sync::Arc;

#[derive(forgy::Build)]
#[forgy(input = Input)]
struct Foo {
  #[forgy(value = input.the_string.clone())]
  from_input: String,
}

#[derive(forgy::Build)]
#[forgy(input = Input)]
struct Bar {
  foo: Arc<Foo>,
}

struct Input {
  the_string: String,
}

fn main() {
  let mut c = forgy::Container::new(Input {
    the_string: "from input".to_string(),
  });

  let bar: Bar = c.build();
  assert_eq!(bar.foo.from_input, "from input");

  let foo: Arc<Foo> = c.get();
  assert_eq!(Arc::as_ptr(&bar.foo), Arc::as_ptr(&foo));
}
Commit count: 3

cargo fmt