3 ms·
I understood that, but it's an unfortunate suffix.
by gosub 12y ago
I understood that, but it's an unfortunate suffix.
- pestaa 12y agoI agree. Isn't it the default though? Could be implied when you choose to leave it out.
- hornetblack 12y agoYes it could be implied if left out. Due to type inference. `5` would be signed or unsigned if left off. Depends on how you use it. So you could try. use std::num::abs; let v = vec!['a', 'b', 'c', 'd']; let x = 3; let c = v[x]; // v.index (operator overload) constrains x to type uint. let y = abs(x); // error: failed to find an implementation of trait core::num::Signed for uint. // abs can't constain the type to an int because abs can take anything that // implements `Signed` (eg BigInt) If you wanted to make sure that x was signed. let v = vec!['a', 'b', 'c', 'd']; let x = 3i; let y = abs(x); // Ok as x is signed. let c = v[x]; // error: mismatched types: expected `uint` but found `int` If you really wanted to index to try an index with an int you can use a checked cast. let casted = x.to_uint(); // Returns None if x is negative or Some(x) if it's postive. Also a generic int doesn't have to be int or uint, it can be any integer value: signed: i8, i16, i32, i64 or int. Unsigned: u8, u16, u32, u64 or uint.