是否有可能编写一个生成函数的宏,其中该函数的参数个数由宏决定?例如,我想写一些东西,以便更容易地使用Cassandra驱动程序中的预准备语句.
let prepared = prepare!(session, "insert into blah (id, name, reading ) values (?, ?, ?)", int, string, float);
let stmt = prepared(1, "test".to_string(), 3.1);
session.execute(stmt);
Run Code Online (Sandbox Code Playgroud)
prepare!
需要生成类似的东西(仅为简洁起见):
fn some_func(arg1, arg2, arg3) -> Statement {
let mut statement = Statement::new("insert into blah (id, name, reading ) values (?, ?, ?)", 3);
statement.bind_int(0, arg1).unwrap()
.bind_string(1, arg2).unwrap()
.bind_float(2, arg3).unwrap()
}
Run Code Online (Sandbox Code Playgroud)