Skip to main content
Version: dev

Strings

The string type is a fixed length value defined with str<N>.

You can use strings in assert() functions or print them with println(). See more about Logging.

use dep::std;

fn main(message : pub str<11>, hex_as_string : str<4>) {
println(message);
assert(message == "hello world");
assert(hex_as_string == "0x41");
}

You can convert a str<N> to a byte array by calling as_bytes() or a vector by calling as_bytes_vec().

fn main() {
let message = "hello world";
let message_bytes = message.as_bytes();
let mut message_vec = message.as_bytes_vec();
assert(message_bytes.len() == 11);
assert(message_bytes[0] == 104);
assert(message_bytes[0] == message_vec.get(0));
}

Escape characters

You can use escape characters for your strings:

Escape SequenceDescription
\rCarriage Return
\nNewline
\tTab
\0Null Character
\"Double Quote
\\Backslash

Example:

let s = "Hello \"world" // prints "Hello "world"
let s = "hey \tyou"; // prints "hey you"

Raw strings

A raw string begins with the letter r and is optionally delimited by a number of hashes #.

Escape characters are not processed within raw strings. All contents are interpreted literally.

Example:

let s = r"Hello world";
let s = r#"Simon says "hello world""#;

// Any number of hashes may be used (>= 1) as long as the string also terminates with the same number of hashes
let s = r#####"One "#, Two "##, Three "###, Four "####, Five will end the string."#####;