我想知道是否有可能区分Rust中的signed和unsigned int。在std::num
我们有Int
,UnsignedInt : Int
和SignedInt : Int + Neg
,所以这两个不是互斥的。如何编写区分signed和unsigned int的泛型函数?
在最简单的情况下,是否可以编写一个简单的函数fn<T: Int>is_signed(value: T) -> bool
,当有符号值被传递时(例如i32
),它将返回true?有没有更好的方法来做到这一点?
编辑回应评论如下:一个真实的例子是包装一个C FFI如该返回符号整数类型的函数返回一个-1
而返回的uint功能指示错误通过返回0
(这一点,再加上它表示错误让我感兴趣的是在Rust里做什么是一种惯用的方式)。如果从is_signed
删除不需要参数x
is_signed(5i)
或者:
我很好奇,想知道这是什么能力将允许你这样做。 – Shepmaster
@Shepmaster为了清晰起见编辑帖子。谢谢 – aldanor
请注意,'std :: Int'在1.0中已被弃用,并且替换为[isize](http://doc.rust-lang.org/std/primitive.isize.html) –