相关疑难解决方法(0)

如何交换两个变量?

这个Python代码最接近的等效Rust代码是什么?

a, b = 1, 2
a, b = b, a + b
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个迭代的Fibonacci函数.我有Python代码我想转换为Rust.一切都很好,除了交换部分.

def fibonacci(n):
    if n < 2:
        return n
    fibPrev = 1
    fib = 1
    for num in range(2, n):
        fibPrev, fib = fib, fib + fibPrev
    return fib
Run Code Online (Sandbox Code Playgroud)

rust

17
推荐指数
2
解决办法
6926
查看次数

我可以在不将结果绑定到let/match/for语句中的新变量的情况下构造元组吗?

我想构造一个元组并将结果的一部分分配给一个新变量,并将结果的另一部分分配给现有的.

以下代码说明了intent(这是一个导致无限循环打印的愚蠢示例[0]):

fn main() {
    let mut list = &[0, 1, 2, 3][..];
    while !list.is_empty() {
        let (head, list) = list.split_at(1);
        // An obvious workaround here is to introduce a new variable in the above
        // let statement, and then just assign it to list.
        println!("{:?}", head);
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码创建一个新变量,list而不是重新分配它.

如果我将代码更改为以下(为了避免let引入新list变量),它不会编译:

fn main() {
    let mut list = &[0, 1, 2, 3][..];
    while !list.is_empty() {
        let head;
        (head, list) = list.split_at(1);
        println!("{:?}", …
Run Code Online (Sandbox Code Playgroud)

rust

17
推荐指数
2
解决办法
2301
查看次数

如何构造元组以使绑定可变?

如果我有以下结构:

struct MyStruct { tuple: (i32, i32) };
Run Code Online (Sandbox Code Playgroud)

并具有以下功能:

// This will not compile
fn function(my_struct: &mut MyStruct) {
    let (val1, val2) = my_struct.tuple;
    val1 = 1;
    val2 = 2;
}
Run Code Online (Sandbox Code Playgroud)

我如何借用val1和val2作为可变因此当我重新分配它们时,更改出现在原始结构中?

rust

11
推荐指数
2
解决办法
5457
查看次数

标签 统计

rust ×3