ruka_runtime/
string.rs

1/// Public symbol for `std::string::concat`.
2pub const CONCAT_SYMBOL: &str = "std::string::concat";
3/// Public symbol for `std::string::starts_with`.
4pub const STARTS_WITH_SYMBOL: &str = "std::string::starts_with";
5/// Public symbol for `std::string::drop`.
6pub const DROP_SYMBOL: &str = "std::string::drop";
7/// Public symbol for `std::string::take`.
8pub const TAKE_SYMBOL: &str = "std::string::take";
9
10/// Concatenate two strings.
11pub fn concat(left: String, right: String) -> String {
12    format!("{left}{right}")
13}
14
15/// Return whether one string begins with the provided prefix.
16pub fn starts_with(value: String, prefix: String) -> bool {
17    value.starts_with(&prefix)
18}
19
20/// Drop the first `count` Unicode scalar values from a string.
21pub fn drop(value: String, count: i64) -> String {
22    let count = usize::try_from(count).expect("string drop count must be non-negative");
23    value.chars().skip(count).collect()
24}
25
26/// Take the first `count` Unicode scalar values from a string.
27pub fn take(value: String, count: i64) -> String {
28    let count = usize::try_from(count).expect("string take count must be non-negative");
29    value.chars().take(count).collect()
30}