telltale_types/val_type.rs
1//! Value Types for Session Type Payloads
2//!
3//! Shared `ValType` definition matching Lean's `SessionTypes.ValType`.
4//! Represents the types of values carried in messages.
5
6use serde::{Deserialize, Serialize};
7
8/// Value types for message payloads in session types.
9///
10/// Corresponds to Lean's `SessionTypes.ValType`.
11#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
12pub enum ValType {
13 Unit,
14 Bool,
15 Nat,
16 String,
17 Prod(Box<ValType>, Box<ValType>),
18 /// Channel endpoint type (session id, role)
19 Chan {
20 sid: usize,
21 role: std::string::String,
22 },
23}