cardano_serialization_lib/protocol_types/plutus/
language.rs1use crate::*;
2
3#[wasm_bindgen]
4#[derive(
5 Clone,
6 Copy,
7 Debug,
8 Hash,
9 Eq,
10 Ord,
11 PartialEq,
12 PartialOrd,
13 serde::Serialize,
14 serde::Deserialize,
15 JsonSchema,
16)]
17pub enum LanguageKind {
18 PlutusV1 = 0,
19 PlutusV2 = 1,
20 PlutusV3 = 2,
21}
22
23impl LanguageKind {
24 pub(crate) fn from_u64(x: u64) -> Option<LanguageKind> {
25 match x {
26 0 => Some(LanguageKind::PlutusV1),
27 1 => Some(LanguageKind::PlutusV2),
28 2 => Some(LanguageKind::PlutusV3),
29 _ => None,
30 }
31 }
32}
33
34#[wasm_bindgen]
35#[derive(
36 Clone,
37 Copy,
38 Debug,
39 Hash,
40 Eq,
41 Ord,
42 PartialEq,
43 PartialOrd,
44 serde::Serialize,
45 serde::Deserialize,
46 JsonSchema,
47)]
48pub struct Language(pub(crate) LanguageKind);
49
50impl_to_from!(Language);
51
52#[wasm_bindgen]
53impl Language {
54 pub fn new_plutus_v1() -> Self {
55 Self(LanguageKind::PlutusV1)
56 }
57
58 pub fn new_plutus_v2() -> Self {
59 Self(LanguageKind::PlutusV2)
60 }
61
62 pub fn new_plutus_v3() -> Self {
63 Self(LanguageKind::PlutusV3)
64 }
65
66 pub fn kind(&self) -> LanguageKind {
67 self.0.clone()
68 }
69}