1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
get_from_js!(active_segments -> { Object.keys(RawMemory.segments) } -> Vec<i32>);
get_from_js!(get_segment(id: i32) -> { RawMemory.segments[@{id}] } -> Option<String>);
pub fn set_segment(id: i32, data: &str) {
js! {
RawMemory.segments[@{id}] = @{data};
}
}
get_from_js!(foreign_segment_username -> {
RawMemory.forignSegment && RawMemory.forignSegment.username
} -> Option<String>);
get_from_js!(foreign_segment_id -> {
RawMemory.forignSegment && RawMemory.forignSegment.id
} -> Option<i32>);
get_from_js!(foreign_segment_data -> {
RawMemory.forignSegment && RawMemory.forignSegment.data
} -> Option<String>);
pub fn set_active_segments(ids: &[i32]) {
assert!(
ids.len() <= 10,
"can't set more than 10 active segments at a time"
);
js! {
RawMemory.setActiveSegments(@{ids});
}
}
pub fn set_active_foreign_segment(username: &str, id: Option<i32>) {
match id {
Some(id) => js! { RawMemory.setActiveForeignSegment(@{username}, @{id}); },
None => js! { RawMemory.setActiveForeignSegment(@{username}); },
};
}
pub fn set_default_public_segment(id: i32) {
js! {
RawMemory.setDefaultPublicSegment(@{id});
}
}
pub fn set_public_segments(ids: &[i32]) {
js! {
RawMemory.setPublicSegments(@{ids});
}
}