emmylua_code_analysis/db_index/module/
workspace.rs1use 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}