A value of type
String<N> represents a sequence of unsigned bytes with the assumption that the data is valid UTF-8.
String<N> type is generic over a constant value that has to be an integer literal. That value
N constraints the maximum number of bytes that are available for storing the string's characters.
Note that the value of
N does not restrict the type to hold exactly that number of bytes at all times which means that a type such as
String<10> can hold a short word such as
"fox" but it can not hold a full sentence such as
"The brown fox jumps over the white fence".
contract Foo: fn bar(): let single_byte_string: String<1> = "a" # Casting is needed because the type inferred from "foo" is String<3> let longer_string: String<100> = String<100>("foo")