Skip to main content

spacetimedsl_derive_input/internal/
rust.rs

1use crate::api::rust::visibility::RustVisibility;
2use quote::ToTokens;
3use std::fmt;
4
5pub mod table;
6
7pub mod column;
8
9impl RustVisibility {
10    pub(in crate::internal) fn map(value: &syn::Visibility) -> RustVisibility {
11        match value {
12            syn::Visibility::Public(_) => RustVisibility::Public,
13            syn::Visibility::Restricted(vis) => RustVisibility::Restricted(*vis.path.clone()),
14            syn::Visibility::Inherited => RustVisibility::Private,
15        }
16    }
17}
18
19impl fmt::Display for RustVisibility {
20    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
21        match self {
22            Self::Public => {
23                write!(f, "pub")
24            }
25            Self::Restricted(str) => {
26                let str = str.to_token_stream().to_string();
27
28                match str.as_str() {
29                    "crate" => {
30                        write!(f, "pub (crate)")
31                    }
32                    "super" => {
33                        write!(f, "pub (super)")
34                    }
35                    str => {
36                        write!(f, "pub (in {str})")
37                    }
38                }
39            }
40            Self::Private => {
41                write!(f, "")
42            }
43        }
44    }
45}