3.3. Soft-failing string-to-numeric conversions returning Result<T; ConversionError>
The STRINGS_CONVERT module provides soft-failing string-to-numeric conversions
that return Result<T; ConversionError> instead of panicking or silently
returning zero. Use these when parsing untrusted input where you need to
distinguish between not-a-number, overflow, and trailing-garbage.
All functions and symbols are in the “strings_convert” module, use require to get access to it.
require daslib/strings_convert
Example:
require daslib/strings_convert
[export]
def main() {
let r = try_to_int("42")
if (is_ok(r)) {
print("parsed: {unwrap(r)}\n")
}
let bad = try_to_int("nope")
if (is_err(bad)) {
print("error: {unwrap_err(bad)}\n")
}
}
// output:
// parsed: 42
// error: invalid_argument
3.3.1. Enumerations
- ConversionError
enum ConversionError
3.3.2. Structures
- Result<int8,strings_convert::ConversionError>
struct Result<int8,strings_convert::ConversionError>
- Result<uint8,strings_convert::ConversionError>
struct Result<uint8,strings_convert::ConversionError>
- Result<int16,strings_convert::ConversionError>
struct Result<int16,strings_convert::ConversionError>
- Result<uint16,strings_convert::ConversionError>
struct Result<uint16,strings_convert::ConversionError>
- Result<int,strings_convert::ConversionError>
struct Result<int,strings_convert::ConversionError>
- Result<uint,strings_convert::ConversionError>
struct Result<uint,strings_convert::ConversionError>
- Result<int64,strings_convert::ConversionError>
struct Result<int64,strings_convert::ConversionError>
- Result<uint64,strings_convert::ConversionError>
struct Result<uint64,strings_convert::ConversionError>
- Result<float,strings_convert::ConversionError>
struct Result<float,strings_convert::ConversionError>
- Result<double,strings_convert::ConversionError>
struct Result<double,strings_convert::ConversionError>
3.3.3. Soft-failing conversions
try_to_double (str: string) : Result<double,strings_convert::ConversionError>
try_to_float (str: string) : Result<float,strings_convert::ConversionError>
try_to_int (str: string; hex: bool = false) : Result<int,strings_convert::ConversionError>
try_to_int16 (str: string; hex: bool = false) : Result<int16,strings_convert::ConversionError>
try_to_int64 (str: string; hex: bool = false) : Result<int64,strings_convert::ConversionError>
try_to_int8 (str: string; hex: bool = false) : Result<int8,strings_convert::ConversionError>
try_to_uint (str: string; hex: bool = false) : Result<uint,strings_convert::ConversionError>
try_to_uint16 (str: string; hex: bool = false) : Result<uint16,strings_convert::ConversionError>
try_to_uint64 (str: string; hex: bool = false) : Result<uint64,strings_convert::ConversionError>
try_to_uint8 (str: string; hex: bool = false) : Result<uint8,strings_convert::ConversionError>
- try_to_double(str: string): Result<double,strings_convert::ConversionError>
Parse str as a 64-bit float.
- Arguments:
str : string implicit
- try_to_float(str: string): Result<float,strings_convert::ConversionError>
Parse str as a 32-bit float.
- Arguments:
str : string implicit
- try_to_int(str: string; hex: bool = false): Result<int,strings_convert::ConversionError>
Parse str as a signed 32-bit integer.
- Arguments:
str : string implicit
hex : bool
- try_to_int16(str: string; hex: bool = false): Result<int16,strings_convert::ConversionError>
Parse str as a signed 16-bit integer.
- Arguments:
str : string implicit
hex : bool
- try_to_int64(str: string; hex: bool = false): Result<int64,strings_convert::ConversionError>
Parse str as a signed 64-bit integer.
- Arguments:
str : string implicit
hex : bool
- try_to_int8(str: string; hex: bool = false): Result<int8,strings_convert::ConversionError>
Parse str as a signed 8-bit integer.
- Arguments:
str : string implicit
hex : bool
- try_to_uint(str: string; hex: bool = false): Result<uint,strings_convert::ConversionError>
Parse str as an unsigned 32-bit integer.
- Arguments:
str : string implicit
hex : bool
- try_to_uint16(str: string; hex: bool = false): Result<uint16,strings_convert::ConversionError>
Parse str as an unsigned 16-bit integer.
- Arguments:
str : string implicit
hex : bool
- try_to_uint64(str: string; hex: bool = false): Result<uint64,strings_convert::ConversionError>
Parse str as an unsigned 64-bit integer.
- Arguments:
str : string implicit
hex : bool
- try_to_uint8(str: string; hex: bool = false): Result<uint8,strings_convert::ConversionError>
Parse str as an unsigned 8-bit integer.
- Arguments:
str : string implicit
hex : bool