相关疑难解决方法(0)

println!借用或拥有变量?

我对借贷和所有权感到困惑.在Rust 文档中有关引用和借用的内容

let mut x = 5;
{
    let y = &mut x;
    *y += 1;
}
println!("{}", x);
Run Code Online (Sandbox Code Playgroud)

他们说

println!可以借x.

我很困惑.如果println!借入x,为什么它通过x&x

我尝试在下面运行此代码

fn main() {
    let mut x = 5;
    {
        let y = &mut x;
        *y += 1;
    }
    println!("{}", &x);
}
Run Code Online (Sandbox Code Playgroud)

除了传递&x给代码之外,这段代码与上面的代码相同println!.它将'6'打印到控制台,这是正确的,与第一个代码的结果相同.

ownership rust

39
推荐指数
1
解决办法
2219
查看次数

如何创建具有可变数量参数的函数?

如何在Rust中创建具有可变数量参数的函数?

像这个Java代码:

void foo(String... args) {
    for (String arg : args) {
        System.out.println(arg);
    }
}
Run Code Online (Sandbox Code Playgroud)

variadic-functions rust

34
推荐指数
3
解决办法
1万
查看次数

是否有可能在纯Rust宏中编写像`print!`这样复杂的东西?

我开始学习Rust宏,但文档有些限制.哪个好 - 我猜他们是专家.虽然我可以进行基本的代码生成,特性的实现等等,但是一些内置的宏似乎远不止于此,例如各种打印宏,它们检查字符串文字并将其用于代码扩展.

我查看了源代码print!,它调用了另一个名为的宏format_args.不幸的是,这似乎并没有构建在"纯Rust"中,评论只是说"内置编译器".

是否可以编写像print!纯Rust宏一样复杂的东西?如果是这样,它会怎么做?

我实际上对构建"编译时间"感兴趣 - 基本上将某些固定字符串识别为在编译时修复的"关键字".这可能是高性能的(可能)但主要是我只对代码生成感兴趣.

code-generation rust rust-macros

8
推荐指数
1
解决办法
225
查看次数

Rust中的宏和函数有什么区别?

引自Rust博客:

最后要提一句:Rust的宏与C宏有很大不同,如果你已经使用过它们了

Rust中的宏和函数有什么区别?它与C有什么不同?

rust

5
推荐指数
2
解决办法
1992
查看次数