swamp_script_std/
lib.rs

1/*
2 * Copyright (c) Peter Bjorklund. All rights reserved. https://github.com/swamp/script
3 * Licensed under the MIT License. See LICENSE in the project root for license information.
4 */
5pub mod collections;
6pub mod prelude;
7
8use swamp_script_semantic::{modules::ResolvedModule, ResolvedRustType, TypeNumber};
9pub const SPARSE_TYPE_ID: TypeNumber = 999;
10pub const SPARSE_ID_TYPE_ID: TypeNumber = 998;
11
12#[must_use]
13pub fn create_std_module() -> ResolvedModule {
14    let std_module = ResolvedModule::new(&["std".to_string()]);
15
16    {
17        let mut borrowed_namespace = std_module.namespace.borrow_mut();
18
19        let sparse_rust_type = ResolvedRustType {
20            type_name: "Sparse".to_string(),
21            number: SPARSE_TYPE_ID,
22        };
23        borrowed_namespace
24            .add_built_in_rust_type(sparse_rust_type)
25            .expect("could not register Sparse type");
26
27        let rust_type_ref_for_id = ResolvedRustType {
28            type_name: "SparseId".to_string(),
29            number: SPARSE_ID_TYPE_ID,
30        };
31        borrowed_namespace
32            .add_built_in_rust_type(rust_type_ref_for_id)
33            .expect("could not register SparseId type");
34    }
35
36    std_module
37}