1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
/// Enumeration of Smithy shape types.
///
/// This represents the core shape types from the Smithy specification,
/// including simple types, aggregate types, and the special member type.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum ShapeType {
// Simple types
/// Boolean type
Boolean,
/// 8-bit signed integer
Byte,
/// 16-bit signed integer
Short,
/// 32-bit signed integer
Integer,
/// 64-bit signed integer
Long,
/// 32-bit floating point
Float,
/// 64-bit floating point
Double,
/// Arbitrary precision integer
BigInteger,
/// Arbitrary precision decimal
BigDecimal,
/// UTF-8 string
String,
/// Binary data
Blob,
/// Timestamp
Timestamp,
/// Document type
Document,
// Aggregate types
/// List type
List,
/// Map type
Map,
/// Structure type
Structure,
/// Union type
Union,
// Member
/// Member shape
Member,
}
impl ShapeType {
/// Returns true if this is a simple type.
#[inline]
pub fn is_simple(&self) -> bool {
matches!(
self,
Self::Boolean
| Self::Byte
| Self::Short
| Self::Integer
| Self::Long
| Self::Float
| Self::Double
| Self::BigInteger
| Self::BigDecimal
| Self::String
| Self::Blob
| Self::Timestamp
| Self::Document
)
}
/// Returns true if this is an aggregate type.
#[inline]
pub fn is_aggregate(&self) -> bool {
matches!(self, Self::List | Self::Map | Self::Structure | Self::Union)
}
/// Returns true if this is a member type.
#[inline]
pub fn is_member(&self) -> bool {
matches!(self, Self::Member)
}
}