rust-macros

    1热度

    1回答

    我对try!和?宏有极大的困难,我开始怀疑现实的结构。我举起straight from the rust-docs下面的例子,它仍然在我的脸上炸开。 代码: pub use std::fs::File; pub use std::io::prelude::*; fn main() { let mut file: File = File::open("foo.txt")?;

    0热度

    1回答

    我需要检查标识符是否以下划线开头。这不起作用: #[macro_export] macro_rules! UNDECORED { (_$_i:ident) => {... do something if underscored}; ($_i:ident) => {... do something else}; } 错误在哪里?

    10热度

    1回答

    我正在读一本关于Rust的书,并开始玩Rust macros。所有的元变类型都在这里解释并且有例子,除了最后一个 - tt。根据这本书,它是一个“单一的令牌树”。我很好奇,它是什么,它用于什么?你能举个例子吗?

    1热度

    2回答

    在许多语言中,一个常见的构造函数用法是初始化使用的语法类似这样的伪对象的值: constructor Foo(args...) { for arg { object.arg = arg } } 锈起初似乎也不例外。为struct许多impl包括一个名为new拉上一系列有序的参数到结构领域的构造函数: struct Circle { x: i32,

    0热度

    2回答

    我正在创建一个匹配两个表达式和一个标识符的宏。我希望能够忽略标识符,如果不需要,但编译器似乎抱怨,如果我在那里使用_。 我的宏: macro_rules! if_some { ($x:expr, $id:ident, $expr:expr) => { match $x { None => None, Some($id) => Some($expr)

    6热度

    1回答

    我想编写一个打印“OK”的宏,然后在方法中返回self。这是我的第一个宏,所以我想这一点,以为它只是使事情就像一个文本替换,但它失败: macro_rules! print_ok_and_return_self { () => { println!("OK"); self } } fn main() { let a = A{};

    2热度

    1回答

    我正在Rust开发一种小语言。为了提高性能,我想为x86使用fastcall调用约定。 ARM不支持"fastcall" ABI。 对于x86: fn add_primitive(&mut self, name: &str, action: extern "fastcall" fn(&mut Self)) { ... } extern "fastcall" fn a_primiti