小编ken*_*esu的帖子

为什么panic!(_)可以带或不带;返回?

在这里看问题 3 。

举个例子,我已经这样编辑了。

fn main() {
    never_return();
    // println!("Failed!");
}

fn never_return() -> ! {
    // Implement this function, don't modify the fn signatures
    panic!("stop")
}
Run Code Online (Sandbox Code Playgroud)

从 fn 返回某些内容时的期望是没有尾随的;。在上面的情况下,panic!(_)返回一个类型never并执行我期望的操作。但是,相同的 fn 签名返回!,无论宏;后面panic是否有 a ,都会编译为相同的结果。我假设情况是这样,因为panic?的内在本质。但找不到我理解的技术解释。

为什么会这样呢?

panic rust

5
推荐指数
1
解决办法
211
查看次数

Rust 中枚举的利基优化是如何工作的?

Option<bool>个例子,我知道Option<bool>和的大小bool都是 1 字节,但我仍然不能 100% 理解其变体的内存分配是如何发生的。

它的工作原理如下吗?

Some(true)00000001

Some(false)00000000

None00000001除了或00000000(例如:)00000010之外的东西(根据下面的评论从“任何东西”更改)

enums rust

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

实现自定义迭代器特征

源代码

pub struct Iterating_ex {
    start: u32,
    end: u32,
}

impl Iterator for Iterating_ex {
    type Item = u32;

    fn next(&mut self) -> Option<u32> {
        if self.start >= self.end {
            None
        } else {
            let result = Some(self.start);
            self.start += 1;
            result
        }
    }
}

fn main() {
    let example = Iterating_ex {
        start: 0,
        end: 5,
    };
    for i in example {
        println!("{i}");
    }
}
Run Code Online (Sandbox Code Playgroud)

输出

0
1
2
3
4
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我理解每段代码想要做什么,但是我无法理解以下内容,可能是由于我对通用迭代器特征缺乏了解;

  1. 为结构体实现迭代器特征是否会自动生成可迭代的数据类型?在这种情况下,我不知道为什么可以在example.
  2. 看起来该next方法被作为循环调用,直到None …

iterator rust

2
推荐指数
1
解决办法
384
查看次数

综合 Rust Ch.16.2 - 使用捕获和 const 表达式进行结构的模式匹配

无法理解Google 综合 Rust 的模式匹配 - 解构结构中的第二个演讲者注释点。

\n

这是示例代码。

\n
struct Foo {\n    x: (u32, u32),\n    y: u32,\n}\n\n#[rustfmt::skip]\nfn main() {\n    let foo = Foo { x: (1, 2), y: 3 };\n    match foo {\n        Foo { x: (1, b), y } => println!("x.0 = 1, b = {b}, y = {y}"),\n        Foo { y: 2, x: i }   => println!("y = 2, x = {i:?}"),\n        Foo { y, .. }        => println!("y = {y}, other fields were ignored"),\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n …

pattern-matching rust

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

标签 统计

rust ×4

enums ×1

iterator ×1

panic ×1

pattern-matching ×1