emmylua_code_analysis/db_index/module/
workspace.rs

1use std::{fmt, path::PathBuf};
2
3#[derive(Debug)]
4pub struct Workspace {
5    pub root: PathBuf,
6    pub id: WorkspaceId,
7}
8
9impl Workspace {
10    pub fn new(root: PathBuf, id: WorkspaceId) -> Self {
11        Self { root, id }
12    }
13}
14
15#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
16pub struct WorkspaceId {
17    pub id: u32,
18}
19
20#[allow(unused)]
21impl WorkspaceId {
22    pub const STD: WorkspaceId = WorkspaceId { id: 0 };
23    pub const MAIN: WorkspaceId = WorkspaceId { id: 1 };
24
25    pub fn is_library(&self) -> bool {
26        self.id > 1
27    }
28
29    pub fn is_main(&self) -> bool {
30        self.id == 1
31    }
32
33    pub fn is_std(&self) -> bool {
34        self.id == 0
35    }
36}
37
38impl fmt::Display for WorkspaceId {
39    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
40        match self.id {
41            0 => write!(f, "std"),
42            1 => write!(f, "main"),
43            _ => write!(f, "lib{}", self.id - 1),
44        }
45    }
46}