# Arc Trait `arc_trait` is a procedural macro that simplifies the process of implementing traits for `std::sync::Arc`. By applying this macro to a trait, you enable `Arc` to implement it whenever the inner type `T` implements the trait, saving you from writing repetitive boilerplate code. ## Features - Automatically implements a trait for `std::sync::Arc` types. - Simplifies code and reduces boilerplate. - Easy to use with simple attribute-based syntax. ## Installation Add this to your `Cargo.toml`: ```toml [dependencies] arc_trait = "0.1.0" ``` And this to your crate root: ```rust extern crate arc_trait; use arc_trait::arc_trait; ``` ## Usage Apply the arc_trait attribute to your traits as shown in the example: ```rust extern crate arc_trait; use arc_trait::arc_trait; use std::sync::Arc; #[arc_trait] trait ExampleTrait { fn example_method(&self, value: i32) -> i32; } struct Example; impl ExampleTrait for Example { fn example_method(&self, value: i32) -> i32 { value + 1 } } fn main() { let example = Arc::new(Example); assert_eq!(example.example_method(1), 2); } ``` ## How It Works arc_trait works by: - Parsing the given trait to identify all methods within it. - Generating an implementation of the trait for `std::sync::Arc` that forwards method calls to the inner value wrapped by the `Arc`. ## Contributing Contributions are welcome! Feel free to open issues or submit pull requests on [GitHub](https://github.com/stphnsmpsn/arc-trait). ## License This project is licensed under the MIT License. See the LICENSE file for details.