Search by name, SuiNS, address, digest, object ID, coin type or checkpoint.

API

string

Module0x0000…0001
Move path
0x0000…0001::string
Functions
1915 public, 0 entry
Structs
1
Friend modules
None
string

Bytecode278 lines

The on-chain disassembly. Offsets are bytecode positions within each function.

// Move bytecode v7
module 1.string {
use 0000000000000000000000000000000000000000000000000000000000000001::ascii;
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
 
struct String has copy, drop, store {
bytes: vector<u8>
}
 
public utf8(Arg0: vector<u8>): String {
B0:
0ImmBorrowLoc[0](Arg0: vector<u8>)
1Call internal_check_utf8(&vector<u8>): bool
2BrFalse(4)
B1:
3Branch(6)
B2:
4LdConst[0](u64: 1)
5Abort
B3:
6MoveLoc[0](Arg0: vector<u8>)
7Pack[0](String)
8Ret
}
 
public from_ascii(Arg0: String): String {
B0:
0MoveLoc[0](Arg0: String)
1Call ascii::into_bytes(String): vector<u8>
2Pack[0](String)
3Ret
}
 
public to_ascii(Arg0: String): String {
B0:
0MoveLoc[0](Arg0: String)
1Unpack[0](String)
2Call ascii::string(vector<u8>): String
3Ret
}
 
public try_utf8(Arg0: vector<u8>): Option<String> {
L1: loc0: Option<String>
B0:
0ImmBorrowLoc[0](Arg0: vector<u8>)
1Call internal_check_utf8(&vector<u8>): bool
2BrFalse(8)
B1:
3MoveLoc[0](Arg0: vector<u8>)
4Pack[0](String)
5Call option::some<String>(String): Option<String>
6StLoc[1](loc0: Option<String>)
7Branch(10)
B2:
8Call option::none<String>(): Option<String>
9StLoc[1](loc0: Option<String>)
B3:
10MoveLoc[1](loc0: Option<String>)
11Ret
}
 
public as_bytes(Arg0: &String): &vector<u8> {
B0:
0MoveLoc[0](Arg0: &String)
1ImmBorrowField[0](String.bytes: vector<u8>)
2Ret
}
 
public into_bytes(Arg0: String): vector<u8> {
B0:
0MoveLoc[0](Arg0: String)
1Unpack[0](String)
2Ret
}
 
public is_empty(Arg0: &String): bool {
B0:
0MoveLoc[0](Arg0: &String)
1ImmBorrowField[0](String.bytes: vector<u8>)
2Call vector::is_empty<u8>(&vector<u8>): bool
3Ret
}
 
public length(Arg0: &String): u64 {
B0:
0MoveLoc[0](Arg0: &String)
1ImmBorrowField[0](String.bytes: vector<u8>)
2VecLen(19)
3Ret
}
 
public append(Arg0: &mut String, Arg1: String) {
B0:
0MoveLoc[0](Arg0: &mut String)
1MutBorrowField[0](String.bytes: vector<u8>)
2ImmBorrowLoc[1](Arg1: String)
3ImmBorrowField[0](String.bytes: vector<u8>)
4ReadRef
5Call vector::append<u8>(&mut vector<u8>, vector<u8>)
6Ret
}
 
public append_utf8(Arg0: &mut String, Arg1: vector<u8>) {
B0:
0MoveLoc[0](Arg0: &mut String)
1MoveLoc[1](Arg1: vector<u8>)
2Call utf8(vector<u8>): String
3Call append(&mut String, String)
4Ret
}
 
public insert(Arg0: &mut String, Arg1: u64, Arg2: String) {
L3: loc0: bool
L4: loc1: &vector<u8>
L5: loc2: String
L6: loc3: String
L7: loc4: u64
B0:
0CopyLoc[0](Arg0: &mut String)
1ImmBorrowField[0](String.bytes: vector<u8>)
2StLoc[4](loc1: &vector<u8>)
3CopyLoc[1](Arg1: u64)
4CopyLoc[4](loc1: &vector<u8>)
5VecLen(19)
6Le
7BrFalse(13)
B1:
8MoveLoc[4](loc1: &vector<u8>)
9CopyLoc[1](Arg1: u64)
10Call internal_is_char_boundary(&vector<u8>, u64): bool
11StLoc[3](loc0: bool)
12Branch(17)
B2:
13MoveLoc[4](loc1: &vector<u8>)
14Pop
15LdFalse
16StLoc[3](loc0: bool)
B3:
17MoveLoc[3](loc0: bool)
18BrFalse(20)
B4:
19Branch(24)
B5:
20MoveLoc[0](Arg0: &mut String)
21Pop
22LdConst[1](u64: 2)
23Abort
B6:
24CopyLoc[0](Arg0: &mut String)
25FreezeRef
26Call length(&String): u64
27StLoc[7](loc4: u64)
28CopyLoc[0](Arg0: &mut String)
29FreezeRef
30LdU64(0)
31CopyLoc[1](Arg1: u64)
32Call substring(&String, u64, u64): String
33StLoc[6](loc3: String)
34CopyLoc[0](Arg0: &mut String)
35FreezeRef
36MoveLoc[1](Arg1: u64)
37MoveLoc[7](loc4: u64)
38Call substring(&String, u64, u64): String
39StLoc[5](loc2: String)
40MutBorrowLoc[6](loc3: String)
41MoveLoc[2](Arg2: String)
42Call append(&mut String, String)
43MutBorrowLoc[6](loc3: String)
44MoveLoc[5](loc2: String)
45Call append(&mut String, String)
46MoveLoc[6](loc3: String)
47MoveLoc[0](Arg0: &mut String)
48WriteRef
49Ret
}
 
public substring(Arg0: &String, Arg1: u64, Arg2: u64): String {
L3: loc0: bool
L4: loc1: &vector<u8>
L5: loc2: u64
B0:
0MoveLoc[0](Arg0: &String)
1ImmBorrowField[0](String.bytes: vector<u8>)
2StLoc[4](loc1: &vector<u8>)
3CopyLoc[4](loc1: &vector<u8>)
4VecLen(19)
5StLoc[5](loc2: u64)
6CopyLoc[2](Arg2: u64)
7MoveLoc[5](loc2: u64)
8Le
9BrFalse(29)
B1:
10CopyLoc[1](Arg1: u64)
11CopyLoc[2](Arg2: u64)
12Le
13BrFalse(26)
B2:
14CopyLoc[4](loc1: &vector<u8>)
15CopyLoc[1](Arg1: u64)
16Call internal_is_char_boundary(&vector<u8>, u64): bool
17BrFalse(23)
B3:
18CopyLoc[4](loc1: &vector<u8>)
19CopyLoc[2](Arg2: u64)
20Call internal_is_char_boundary(&vector<u8>, u64): bool
21StLoc[3](loc0: bool)
22Branch(31)
B4:
23LdFalse
24StLoc[3](loc0: bool)
25Branch(31)
B5:
26LdFalse
27StLoc[3](loc0: bool)
28Branch(31)
B6:
29LdFalse
30StLoc[3](loc0: bool)
B7:
31MoveLoc[3](loc0: bool)
32BrFalse(34)
B8:
33Branch(38)
B9:
34MoveLoc[4](loc1: &vector<u8>)
35Pop
36LdConst[1](u64: 2)
37Abort
B10:
38MoveLoc[4](loc1: &vector<u8>)
39MoveLoc[1](Arg1: u64)
40MoveLoc[2](Arg2: u64)
41Call internal_sub_string(&vector<u8>, u64, u64): vector<u8>
42Pack[0](String)
43Ret
}
 
public index_of(Arg0: &String, Arg1: &String): u64 {
B0:
0MoveLoc[0](Arg0: &String)
1ImmBorrowField[0](String.bytes: vector<u8>)
2MoveLoc[1](Arg1: &String)
3ImmBorrowField[0](String.bytes: vector<u8>)
4Call internal_index_of(&vector<u8>, &vector<u8>): u64
5Ret
}
 
native internal_check_utf8(Arg0: &vector<u8>): bool;
 
native internal_is_char_boundary(Arg0: &vector<u8>, Arg1: u64): bool;
 
native internal_sub_string(Arg0: &vector<u8>, Arg1: u64, Arg2: u64): vector<u8>;
 
native internal_index_of(Arg0: &vector<u8>, Arg1: &vector<u8>): u64;
 
public bytes(Arg0: &String): &vector<u8> {
B0:
0MoveLoc[0](Arg0: &String)
1Call as_bytes(&String): &vector<u8>
2Ret
}
 
public sub_string(Arg0: &String, Arg1: u64, Arg2: u64): String {
B0:
0MoveLoc[0](Arg0: &String)
1MoveLoc[1](Arg1: u64)
2MoveLoc[2](Arg2: u64)
3Call substring(&String, u64, u64): String
4Ret
}
 
Constants [
0 => u64: 1
1 => u64: 2
]
}