Browse Source

cant figure out how to fully qualify these paths...

master
Jonathan Strong 4 years ago
parent
commit
8a6d0580dc
1 changed files with 37 additions and 3 deletions
  1. +37
    -3
      src/lib.rs

+ 37
- 3
src/lib.rs View File

@@ -299,9 +299,9 @@ mod tests {

#[test]
fn example_for_why_you_should_use_fully_qualified_names() {
struct A;
pub struct A;

trait Devious {
pub trait Devious {
fn abc(&self) -> isize { 42 }
fn xyz(&self) -> isize { 42 }
}
@@ -319,13 +319,32 @@ mod tests {
<A as Devious>::abc(&$x)
}
}
let c = <A as ::tests::example_for_why_you_should_use_fully_qualified_names::Devious>::abc(&a);

macro_rules! you_gotta_be_wiser {
{ [[ $x:ident ]] } => {
<A as ::tests::example_for_why_you_should_use_fully_qualified_names::Devious>::abc(&$x)
}
//{ [[ $x:ident ]] } => {
// <A as crate::tests::example_for_why_you_should_use_fully_qualified_names::Devious>::abc(&$x)
//};

//{ -^-^- $x:ident -^-^- } => {{
// // invoking the version that's inside `the_upside_down`
// use crate::tests::example_for_why_you_should_use_fully_qualified_names::the_upside_down::Devious as OtherDevious;
// <A as crate::tests::example_for_why_you_should_use_fully_qualified_names::the_upside_down::OtherDevious>::xyz(&$x)
//}};
}

assert_eq!(didnt_see_it_coming!{ a <-> }, 42);

assert_eq!(you_gotta_be_wiser!{ [[ a ]] }, 42);
//assert_eq!(you_gotta_be_wiser!{ -^-^- a -^-^- }, -42);

/// muhaha
fn the_upside_down(a: &A) -> isize {
/// we have our own 'Devious' down here...
trait Devious {
pub trait Devious {
fn abc(&self) -> isize { -42 }
fn xyz(&self) -> isize { -42 }
}
@@ -339,4 +358,19 @@ mod tests {

}

#[test]
fn make_adder_with_supplied_name_working_example() {
macro_rules! make_adder_fn {
($f:ident, $n:expr) => {
fn $f(rhs: i32) -> i32 {
$n + rhs
}
}
}
make_adder_fn!(add_42, 42);

assert_eq!(add_42(0), 42);
assert_eq!(add_42(42), 84);
}

}

Loading…
Cancel
Save