spacetimedsl_derive_input/internal/
rust.rs1use 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}