小编wiz*_*z21的帖子

为什么 Rust 创建的 f32 小于 f32::MIN_POSITIVE?

这段代码:

        let a = 1.00000003E-27f32;
        let b = 3.19291373E+17f32;
        println!("{:e} < {:e}", a/b, std::f32::MIN_POSITIVE);
Run Code Online (Sandbox Code Playgroud)

产生这个结果:

3e-45 < 1.1754944e-38
Run Code Online (Sandbox Code Playgroud)

首先,我期望零,因为它MIN_POSITIVE是最小正常正数。然后我读到了有关次正规数的内容。那么 Rust 打印这个结果是否是因为它是一个次正规数?但是,为什么它不显示为次正规数呢?

floating-point rust

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

用生命周期实现索引特征

我想重载此结构的索引运算符:

struct Ram<'a> {
    ram: &'a mut [u8]
}

impl<'a> Ram<'a> {
  pub fn new( bytes: &mut[u8]) -> Ram {
    Ram {
        ram: bytes
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

...基本上是字节数组上的“控制器”。我这样做是因为我想将它重用于不同大小的字节数组。我知道生命周期在这里是为了确保“ram”引用在整个执行过程中都是有效的。这是我当前的索引代码:

use std::ops::{Index};
impl<'a> Index<usize> for Ram<'a> {
    type Output = u8;
    fn index(&self, i: usize) -> &'a u8 {
        &self.ram[i]
    }
}
Run Code Online (Sandbox Code Playgroud)

这不编译。Rust 说有一个匿名生命周期定义与 'a 在 index(...) 定义中冲突:“错误[E0495]:由于需求冲突,无法推断函数调用中生命周期参数的适当生命周期”。

我应该如何实现这一点?还是我对一生的假设完全错误?谢谢。

indexing overloading lifetime rust

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

标签 统计

rust ×2

floating-point ×1

indexing ×1

lifetime ×1

overloading ×1