Skip to content

An Aspect Toolkit for Rust

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

magnet/aspect-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aspect-rs

Build Status License Cargo Documentation Rust 1.31+

An Aspect Toolkit for Rust

Aspect-RS is a project aiming to provide common ground for the main Aspect-Oriented use cases in Rust. By leveraging the trait system, declarative and procedural macros, Aspect-RS provides blocks that let you wrap methods with your custom logic.

The project has been extracted from the Metered project, which uses the technique to build metrics that can work on expressions or methods, whether they're async or not. The technique seemed general enough to be in its own crate and see if it is of any interest to other parties.

Aspect-RS provides "pointcut" traits when entering or exiting an expression (OnEnter and OnResult), experimental Update and UpdateRef traits that can use parameter shadowing to intercept and update method parameters, and weaving constructs useful when building procedural macros. Please look at the Metered project to see Aspect-RS in action.

Changelog

  • 0.3.0:
    • Updated dependencies to use syn to 2.0, indexmap to 2.1 and synattra to 0.3.0
  • 0.2.0:
    • Updated dependencies to use syn, proc-macro2 and quote 1.0

Required Rust version

Aspect-RS runs on Rust stable.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

An Aspect Toolkit for Rust

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages