Under heavy development. This site describes the intended 1.0 language. Current features and performance vary. Development status
Sn50SnThe SnAPI programming language
0.2.0 Preview 1 · Frozen documentation

Parse

Parses invariant decimal text into the selected numeric type.

Sn is under heavy development. Reference extracted from this release’s bundled standard library. Public API examples are not an exhaustive compatibility test. Read the matching release guide for tested workflows and limitations. Read the status →

Module std.text

import std.text;

Public declaration contracts and authored examples. A page can document several related symbols. Implementation bodies are excluded.

fn

pub const fn TryParse<T>(Text: str) -> Result<T, ParseError> where T: NumberParser, Copyable, Defaultable

Parses invariant decimal text into the selected numeric type. T: Supported numeric destination; all built-in integer and IEEE floating-point types are admitted. Text: UTF-8 view borrowed only for this call; no input storage is retained. Return: Exact value, InvalidSyntax, or OutOfRange; never allocates or logs. @details Integer grammar is [+-]?[0-9]+. Leading zeros are allowed, while whitespace, radix prefixes, separators and Unicode digits are rejected. Negative unsigned text, including -0, is OutOfRange. The first detected syntax or range failure is returned. Work is linear in the input length. Floating-point grammar and nearest-even rounding are documented in

Example

module example.integer_parsing;
from std.text import TryParse, ParseError;
fn Main() -> i32 {
    switch TryParse<i128>("-170141183460469231731687303715884105728") {
        case .Ok { Value = Value } => {
            if Value != -170141183460469231731687303715884105728_i128 { return 1; }
        }
        case .Err { Error = _ } => return 2;
    }
    switch TryParse<u128>("340282366920938463463374607431768211455") {
        case .Ok { Value = Value } => {
            if Value != 340282366920938463463374607431768211455_u128 { return 3; }
        }
        case .Err { Error = _ } => return 4;
    }
    switch TryParse<u8>("256") {
        case .Ok { Value = _ } => return 5;
        case .Err { Error = Error } => { if Error != ParseError.OutOfRange { return 6; } }
    }
    switch TryParse<i32>(" 42") {
        case .Ok { Value = _ } => return 7;
        case .Err { Error = Error } => { if Error != ParseError.InvalidSyntax { return 8; } }
    }
    return 0;
}
Documentation snapshot: October 24, 2026 About versions ↗
Searching Development · language & standard library