voile_util/
tags.rs

1use std::fmt::{Display, Error, Formatter};
2
3/// Row-polymorphic types.
4#[derive(Debug, PartialEq, Eq, Copy, Clone, Ord, PartialOrd, Hash)]
5pub enum VarRec {
6    Variant,
7    Record,
8}
9
10impl Display for VarRec {
11    fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
12        f.write_str(match self {
13            VarRec::Variant => "Sum",
14            VarRec::Record => "Rec",
15        })
16    }
17}
18
19/// Various kinds of dependent types
20#[derive(Debug, PartialEq, Eq, Copy, Clone, Ord, PartialOrd, Hash)]
21pub enum PiSig {
22    Pi,
23    Sigma,
24}
25
26impl Display for PiSig {
27    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error> {
28        f.write_str(match self {
29            PiSig::Pi => "\u{03A0}",
30            PiSig::Sigma => "\u{03A3}",
31        })
32    }
33}
34
35/// Visibility of a parameter -- it can be explicit or implicit
36#[derive(Debug, PartialEq, Eq, Copy, Clone, Ord, PartialOrd, Hash)]
37pub enum Plicit {
38    Ex,
39    Im,
40}