11/// The currently supported version of the Starknet protocol.
2- pub const CURRENT_STARKNET_VERSION : ProtocolVersion = ProtocolVersion :: new ( [ 0 , 13 , 1 , 1 ] ) ; // version 0.13.1.1
2+ pub const CURRENT_STARKNET_VERSION : StarknetVersion = StarknetVersion :: new ( [ 0 , 13 , 1 , 1 ] ) ; // version 0.13.1.1
33
4- // TODO: figure out the exact format of the version string.
54/// Starknet protocol version.
6- #[ derive( Debug , Clone , PartialEq , Eq ) ]
5+ #[ derive( Debug , Copy , Clone , PartialEq , Eq ) ]
76#[ cfg_attr( feature = "arbitrary" , derive( :: arbitrary:: Arbitrary ) ) ]
8- pub struct ProtocolVersion {
7+ pub struct StarknetVersion {
98 /// Each segments represents a part of the version number.
109 segments : [ u8 ; 4 ] ,
1110}
@@ -18,7 +17,7 @@ pub enum ParseVersionError {
1817 ParseSegment ( #[ from] std:: num:: ParseIntError ) ,
1918}
2019
21- impl ProtocolVersion {
20+ impl StarknetVersion {
2221 pub const fn new ( segments : [ u8 ; 4 ] ) -> Self {
2322 Self { segments }
2423 }
@@ -45,9 +44,9 @@ impl ProtocolVersion {
4544 }
4645}
4746
48- impl core:: default:: Default for ProtocolVersion {
47+ impl core:: default:: Default for StarknetVersion {
4948 fn default ( ) -> Self {
50- ProtocolVersion :: new ( [ 0 , 1 , 0 , 0 ] )
49+ StarknetVersion :: new ( [ 0 , 1 , 0 , 0 ] )
5150 }
5251}
5352
@@ -58,7 +57,7 @@ impl core::default::Default for ProtocolVersion {
5857// - Version::new([1, 2, 3, 4]) will be displayed as "1.2.3.4"
5958// - Version::new([1, 2, 3, 0]) will be displayed as "1.2.3"
6059// - Version::new([0, 2, 3, 0]) will be displayed as "0.2.3"
61- impl core:: fmt:: Display for ProtocolVersion {
60+ impl core:: fmt:: Display for StarknetVersion {
6261 fn fmt ( & self , f : & mut core:: fmt:: Formatter < ' _ > ) -> core:: fmt:: Result {
6362 for ( idx, segment) in self . segments . iter ( ) . enumerate ( ) {
6463 // If it's the last segment, don't print it if it's zero.
@@ -77,10 +76,10 @@ impl core::fmt::Display for ProtocolVersion {
7776 }
7877}
7978
80- impl TryFrom < String > for ProtocolVersion {
79+ impl TryFrom < String > for StarknetVersion {
8180 type Error = ParseVersionError ;
8281 fn try_from ( value : String ) -> Result < Self , Self :: Error > {
83- ProtocolVersion :: parse ( & value)
82+ StarknetVersion :: parse ( & value)
8483 }
8584}
8685
@@ -91,16 +90,16 @@ mod serde {
9190 // We de/serialize the version from/into a human-readable string format to prevent breaking the
9291 // database encoding format if ever decide to change its memory representation.
9392
94- impl :: serde:: Serialize for ProtocolVersion {
93+ impl :: serde:: Serialize for StarknetVersion {
9594 fn serialize < S : :: serde:: Serializer > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error > {
9695 serializer. serialize_str ( & self . to_string ( ) )
9796 }
9897 }
9998
100- impl < ' de > :: serde:: Deserialize < ' de > for ProtocolVersion {
99+ impl < ' de > :: serde:: Deserialize < ' de > for StarknetVersion {
101100 fn deserialize < D : :: serde:: Deserializer < ' de > > ( deserializer : D ) -> Result < Self , D :: Error > {
102101 let s = String :: deserialize ( deserializer) ?;
103- ProtocolVersion :: parse ( & s) . map_err ( :: serde:: de:: Error :: custom)
102+ StarknetVersion :: parse ( & s) . map_err ( :: serde:: de:: Error :: custom)
104103 }
105104 }
106105}
@@ -112,47 +111,47 @@ mod tests {
112111 #[ test]
113112 fn parse_version_valid ( ) {
114113 let version = "1.9.0.0" ;
115- let parsed = ProtocolVersion :: parse ( version) . unwrap ( ) ;
114+ let parsed = StarknetVersion :: parse ( version) . unwrap ( ) ;
116115 assert_eq ! ( parsed. segments, [ 1 , 9 , 0 , 0 ] ) ;
117116 assert_eq ! ( String :: from( "1.9.0" ) , parsed. to_string( ) ) ;
118117 }
119118
120119 #[ test]
121120 fn parse_version_missing_parts ( ) {
122121 let version = "1.9.0" ;
123- let parsed = ProtocolVersion :: parse ( version) . unwrap ( ) ;
122+ let parsed = StarknetVersion :: parse ( version) . unwrap ( ) ;
124123 assert_eq ! ( parsed. segments, [ 1 , 9 , 0 , 0 ] ) ;
125124 assert_eq ! ( "1.9.0" , parsed. to_string( ) ) ;
126125 }
127126
128127 #[ test]
129128 fn parse_version_invalid_digit_should_fail ( ) {
130129 let version = "0.fv.1.0" ;
131- assert ! ( ProtocolVersion :: parse( version) . is_err( ) ) ;
130+ assert ! ( StarknetVersion :: parse( version) . is_err( ) ) ;
132131 }
133132
134133 #[ test]
135134 fn parse_version_missing_digit_default_zero ( ) {
136135 let version = "1..." ;
137- let parsed = ProtocolVersion :: parse ( version) . unwrap ( ) ;
136+ let parsed = StarknetVersion :: parse ( version) . unwrap ( ) ;
138137 assert_eq ! ( parsed. segments, [ 1 , 0 , 0 , 0 ] ) ;
139138 assert_eq ! ( "1.0.0" , parsed. to_string( ) ) ;
140139 }
141140
142141 #[ test]
143142 fn parse_version_many_parts_should_succeed ( ) {
144143 let version = "1.2.3.4" ;
145- let parsed = ProtocolVersion :: parse ( version) . unwrap ( ) ;
144+ let parsed = StarknetVersion :: parse ( version) . unwrap ( ) ;
146145 assert_eq ! ( parsed. segments, [ 1 , 2 , 3 , 4 ] ) ;
147146 assert_eq ! ( "1.2.3.4" , parsed. to_string( ) ) ;
148147 }
149148
150149 #[ test]
151150 fn parse_invalid_formats ( ) {
152151 let version = "" ;
153- assert ! ( ProtocolVersion :: parse( version) . is_err( ) ) ;
152+ assert ! ( StarknetVersion :: parse( version) . is_err( ) ) ;
154153 let version = "1.2.3.4.5" ;
155- assert ! ( ProtocolVersion :: parse( version) . is_err( ) ) ;
154+ assert ! ( StarknetVersion :: parse( version) . is_err( ) ) ;
156155 }
157156
158157 #[ cfg( feature = "serde" ) ]
@@ -161,17 +160,17 @@ mod tests {
161160
162161 #[ test]
163162 fn rt_human_readable ( ) {
164- let version = ProtocolVersion :: new ( [ 1 , 2 , 3 , 4 ] ) ;
163+ let version = StarknetVersion :: new ( [ 1 , 2 , 3 , 4 ] ) ;
165164 let serialized = serde_json:: to_string ( & version) . unwrap ( ) ;
166- let deserialized: ProtocolVersion = serde_json:: from_str ( & serialized) . unwrap ( ) ;
165+ let deserialized: StarknetVersion = serde_json:: from_str ( & serialized) . unwrap ( ) ;
167166 assert_eq ! ( version, deserialized) ;
168167 }
169168
170169 #[ test]
171170 fn rt_non_human_readable ( ) {
172- let version = ProtocolVersion :: new ( [ 1 , 2 , 3 , 4 ] ) ;
171+ let version = StarknetVersion :: new ( [ 1 , 2 , 3 , 4 ] ) ;
173172 let serialized = postcard:: to_stdvec ( & version) . unwrap ( ) ;
174- let deserialized: ProtocolVersion = postcard:: from_bytes ( & serialized) . unwrap ( ) ;
173+ let deserialized: StarknetVersion = postcard:: from_bytes ( & serialized) . unwrap ( ) ;
175174 assert_eq ! ( version, deserialized) ;
176175 }
177176 }
0 commit comments