如何在Rust中将无符号整数转换为整数?

时间:2014-11-27 07:42:26

标签: rust

所以我试图获得一个随机数,但我宁愿不让它作为uint而不是int ...不确定这个匹配是否正确,但是编译器没有得到因为我从来没有听说过这件事我想做的事情:

fn get_random(max: &int) -> int {
        // Here we use * to dereference max
        // ...that is, we access the value at 
        // the pointer location rather than
        // trying to do math using the actual
        // pointer itself
        match int::from_uint(rand::random::<uint>() % *max + 1) {
                Some(n) => n,
                None => 0,
        }
}

1 个答案:

答案 0 :(得分:1)

from_uint不在std::int的命名空间中,而是std::numhttp://doc.rust-lang.org/std/num/fn.from_uint.html

原始答案:

使用u32int投放到as。如果您将uintu64投射到int,则可能会溢出到底片中(假设您使用的是64位)。来自文档:

  

uint的大小等于所讨论的特定体系结构上指针的大小。

这有效:

use std::rand;

fn main() { 
    let max = 42i; 
    println!("{}" , get_random(&max)); 
}

fn get_random(max: &int) -> int {
    (rand::random::<u32>() as int) % (*max + 1)
}