The @intCast()
causes undefined behavior when the target type cannot hold the resulting value. Is there something like @safeIntCast()
or a similar function which would return CastError!anytype
?
The @intCast()
causes undefined behavior when the target type cannot hold the resulting value. Is there something like @safeIntCast()
or a similar function which would return CastError!anytype
?
1 Answer
Reset to default 2std.math
has a number of functions for safe casting:
pub fn cast(comptime T: type, x: anytype) ?T
Cast an integer to a different integer type. If the value doesn't fit, return null.
pub fn lossyCast(comptime T: type, value: anytype) T
Cast a value to a different type. If the value doesn't fit in, or can't be perfectly represented by, the new type, it will be converted to the closest possible representation.
pub fn negateCast(x: anytype) !std.meta.Int(.signed, @bitSizeOf(@TypeOf(x)))
Returns the negation of the integer parameter. Result is a signed integer.