Attribute Macro mocktopus::macros::mockable[][src]

#[mockable]

Procedural macro, makes items and their sub-items mockable

Valid to annotate

  • module definitions (makes all its valid to annotate items annotated)
#[mockable]
mod module {
    mod nested {
        fn mockable() { ... }
    }
}
  • standalone functions
#[mockable]
fn mockable() { ... }
  • struct impl blocks (makes all functions inside mockable)
#[mockable]
impl Structure {
    fn mockable() { ... }
}
  • trait impl blocks (makes all functions inside mockable)
#[mockable]
impl Trait for Structure {
    fn mockable() { ... }
}
  • traits (makes all default functions inside mockable)
#[mockable]
trait Trait {
    fn mockable() { ... }
}

Invalid to annotate (WILL FAIL TO COMPILE OR BREAK MOCKING!)

  • single functions in struct impls
impl Structure {
    #[mockable] //INVALID USAGE!
    fn mockable() { ... }
}
  • single functions in trait impls
impl Trait for Structure {
    #[mockable] //INVALID USAGE!
    fn mockable() { ... }
}
  • single default functions in traits
trait Trait {
    #[mockable] //INVALID USAGE!
    fn mockable() { ... }
}

Indifferent to annotate

  • already mockable items (inside annotated modules)
  • module declarations
#[mockable]
mod module;
  • const functions (they are impossible to mock)
  • unsafe functions (they are impossible to mock)
  • any macro generated items (they are impossible to mock)
  • any other items