Rust 如何将参数从函数传递到宏

Rust 如何将参数从函数传递到宏,rust,Rust,解释一下,我有宏信息!(“你好世界”)来自 它在任何地方都能正常工作,但在cargo integration test的common.rs文件中不能正常工作。由于宏的使用,必须在根模块中声明(用于导入),然后提供子模块。但是在集成测试用例中,我们没有根模块,也不能为common.rs(子模块)提供宏 例1: 模块父级 国防部 在这种情况下,子级可以毫无问题地使用宏 例2: 没有模块(作为集成测试用例),只有测试文件 一些测试 #[macro_use] use extern crate some_

解释一下,我有宏信息!(“你好世界”)来自 它在任何地方都能正常工作,但在cargo integration test的common.rs文件中不能正常工作。由于宏的使用,必须在根模块中声明(用于导入),然后提供子模块。但是在集成测试用例中,我们没有根模块,也不能为common.rs(子模块)提供宏

例1: 模块父级 国防部

在这种情况下,子级可以毫无问题地使用宏

例2: 没有模块(作为集成测试用例),只有测试文件 一些测试

#[macro_use]
use extern crate some_crate;

mod child.
 mod child   
在这种情况下,子对象看不到宏,我们只能以这种方式提供宏使用

为了解决这个问题,我创建了一个util模块logger_util,它可以使用宏,然后导入到一些_test.r中

#[macro_use]
use extern crate some_crate;

mod child.
 mod child   
例3: 没有模块(作为集成测试用例),只有测试文件 一些测试

#[macro_use]
use extern crate some_crate;

mod child.
 mod child   
童装

use logger_util

fn foo() {
    logger_util.use_macro()
}
记录器

#[macro_use]
extern crate some_crate;

pub fn use_macro() {
    some_macro!("Hello world")
}
我的下一个问题是: 我怎样才能做到这一点:

fn foo() {
    info!("{} {} ", 123, "hello world")
}
请从以下位置执行此操作:

fn foo() {
    let print_data: SomeType = "{} {} ", 123, "hello world";
    use_macro(print_data)
}
到logger_util.rs

pub fn use_macro(print_data: SomeType) {
    info!("Hello world")
}
解决方案:

use logger_util;  

fn foo() {
    logger_util::use_macro(format_args!("{} {} ", 123, "hello world"))
}

use std::fmt::Arguments;    

pub fn use_macro(args: Arguments) {
    info!("{}", args)
}

为什么不使用
print\u data=format!(…
?SomeType的用途是什么?完全不清楚您在这里问什么,正如前面提到的,您的一些代码是未知的。请尝试进行适当的修改,看看您是否可以校对问题的其余部分。