injectables 0.1.0

A procedural macro library that enables field injection between Rust structs through #[injectable] and #[inject_fields] attributes. The library handles visibility rules, generic type resolution, and detects circular dependencies during compile time to ensure safe composition. This enables a declarative approach to struct composition where fields from one or more source structs can be automatically injected into target structs while respecting Rust's ownership and visibility rules.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
error: Recursive injection detected: RecursiveStruct tries to inject from itself
 --> tests/fail/recursive_injection.rs:4:1
  |
4 | #[inject_fields(RecursiveStruct)]  // Tries to inject its own fields
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: this error originates in the attribute macro `inject_fields` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0422]: cannot find struct, variant or union type `RecursiveStruct` in this scope
  --> tests/fail/recursive_injection.rs:10:14
   |
10 |   let test = RecursiveStruct {
   |              ^^^^^^^^^^^^^^^ not found in this scope