cairo_lang_sierra/extensions/modules/
segment_arena.rs

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
use crate::extensions::NoGenericArgsGenericType;
use crate::ids::GenericTypeId;

/// Type for the Segment Arena builtin.
///
/// This type should be initialized and destructed by the OS.
/// It is assumed to be a pointer to a segment containing the following struct:
/// A data segment start.
/// Number of segments in the data segment.
/// Number of destructed segments.
/// On each new segment/segment finalization the struct is appended to the buffer and the returned
/// pointer is incremented accordingly.
/// The data segment contains the following info for each allocated segment:
/// The start of the segment (written on allocation).
/// The end of the segment (written on finalization).
/// A sequential number of the segment when destructed (written on finalize).
#[derive(Default)]
pub struct SegmentArenaType {}
impl NoGenericArgsGenericType for SegmentArenaType {
    const ID: GenericTypeId = GenericTypeId::new_inline("SegmentArena");
    const STORABLE: bool = true;
    const DUPLICATABLE: bool = false;
    const DROPPABLE: bool = false;
    const ZERO_SIZED: bool = false;
}