代码之家  ›  专栏  ›  技术社区  ›  hedgar2017

如何在Rust中同时打印表达式及其值?

  •  5
  • hedgar2017  · 技术社区  · 6 年前

    self.mega_ultra_field = 100500;
    print_expr_and_value!(self.mega_ultra_field);
    

    输出:

    self.mega_ultra_field 100500
    
    1 回复  |  直到 6 年前
        1
  •  8
  •   Shepmaster Tim Diekmann    6 年前

    通过 stringify! :

    macro_rules! print_expr_and_value {
        ($e:expr) => {
            println!("{} {}", stringify!($e), $e)
        };
    }
    
    struct Foo {
        mega_ultra_field: i32,
    }
    
    impl Foo {
        fn bar(&mut self) {
            self.mega_ultra_field = 100500;
            print_expr_and_value!(self.mega_ultra_field);
        }
    }
    
    fn main() {
        Foo {
            mega_ultra_field: 0,
        }.bar();
    }