mirror of
https://github.com/trussed-dev/cbor-smol.git
synced 2026-06-20 04:17:03 -07:00
deploy: 336941c342
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -17,6 +17,7 @@
|
||||
<a href="#17" id="17">17</a>
|
||||
<a href="#18" id="18">18</a>
|
||||
<a href="#19" id="19">19</a>
|
||||
<a href="#20" id="20">20</a>
|
||||
</pre></div><pre class="rust"><code><span class="kw">pub const </span>MAJOR_OFFSET: u8 = <span class="number">5</span>;
|
||||
|
||||
<span class="kw">pub const </span>MAJOR_POSINT: u8 = <span class="number">0</span>;
|
||||
@@ -26,6 +27,7 @@
|
||||
<span class="kw">pub const </span>MAJOR_ARRAY: u8 = <span class="number">4</span>;
|
||||
<span class="kw">pub const </span>MAJOR_MAP: u8 = <span class="number">5</span>;
|
||||
<span class="kw">pub const </span>MAJOR_SIMPLE: u8 = <span class="number">7</span>;
|
||||
<span class="kw">pub const </span>MAJOR_FLOAT: u8 = <span class="number">7</span>;
|
||||
|
||||
<span class="kw">pub const </span>SIMPLE_FALSE: u8 = <span class="number">20</span>;
|
||||
<span class="kw">pub const </span>SIMPLE_TRUE: u8 = <span class="number">21</span>;
|
||||
|
||||
+377
-3
@@ -1077,6 +1077,193 @@
|
||||
<a href="#1077" id="1077">1077</a>
|
||||
<a href="#1078" id="1078">1078</a>
|
||||
<a href="#1079" id="1079">1079</a>
|
||||
<a href="#1080" id="1080">1080</a>
|
||||
<a href="#1081" id="1081">1081</a>
|
||||
<a href="#1082" id="1082">1082</a>
|
||||
<a href="#1083" id="1083">1083</a>
|
||||
<a href="#1084" id="1084">1084</a>
|
||||
<a href="#1085" id="1085">1085</a>
|
||||
<a href="#1086" id="1086">1086</a>
|
||||
<a href="#1087" id="1087">1087</a>
|
||||
<a href="#1088" id="1088">1088</a>
|
||||
<a href="#1089" id="1089">1089</a>
|
||||
<a href="#1090" id="1090">1090</a>
|
||||
<a href="#1091" id="1091">1091</a>
|
||||
<a href="#1092" id="1092">1092</a>
|
||||
<a href="#1093" id="1093">1093</a>
|
||||
<a href="#1094" id="1094">1094</a>
|
||||
<a href="#1095" id="1095">1095</a>
|
||||
<a href="#1096" id="1096">1096</a>
|
||||
<a href="#1097" id="1097">1097</a>
|
||||
<a href="#1098" id="1098">1098</a>
|
||||
<a href="#1099" id="1099">1099</a>
|
||||
<a href="#1100" id="1100">1100</a>
|
||||
<a href="#1101" id="1101">1101</a>
|
||||
<a href="#1102" id="1102">1102</a>
|
||||
<a href="#1103" id="1103">1103</a>
|
||||
<a href="#1104" id="1104">1104</a>
|
||||
<a href="#1105" id="1105">1105</a>
|
||||
<a href="#1106" id="1106">1106</a>
|
||||
<a href="#1107" id="1107">1107</a>
|
||||
<a href="#1108" id="1108">1108</a>
|
||||
<a href="#1109" id="1109">1109</a>
|
||||
<a href="#1110" id="1110">1110</a>
|
||||
<a href="#1111" id="1111">1111</a>
|
||||
<a href="#1112" id="1112">1112</a>
|
||||
<a href="#1113" id="1113">1113</a>
|
||||
<a href="#1114" id="1114">1114</a>
|
||||
<a href="#1115" id="1115">1115</a>
|
||||
<a href="#1116" id="1116">1116</a>
|
||||
<a href="#1117" id="1117">1117</a>
|
||||
<a href="#1118" id="1118">1118</a>
|
||||
<a href="#1119" id="1119">1119</a>
|
||||
<a href="#1120" id="1120">1120</a>
|
||||
<a href="#1121" id="1121">1121</a>
|
||||
<a href="#1122" id="1122">1122</a>
|
||||
<a href="#1123" id="1123">1123</a>
|
||||
<a href="#1124" id="1124">1124</a>
|
||||
<a href="#1125" id="1125">1125</a>
|
||||
<a href="#1126" id="1126">1126</a>
|
||||
<a href="#1127" id="1127">1127</a>
|
||||
<a href="#1128" id="1128">1128</a>
|
||||
<a href="#1129" id="1129">1129</a>
|
||||
<a href="#1130" id="1130">1130</a>
|
||||
<a href="#1131" id="1131">1131</a>
|
||||
<a href="#1132" id="1132">1132</a>
|
||||
<a href="#1133" id="1133">1133</a>
|
||||
<a href="#1134" id="1134">1134</a>
|
||||
<a href="#1135" id="1135">1135</a>
|
||||
<a href="#1136" id="1136">1136</a>
|
||||
<a href="#1137" id="1137">1137</a>
|
||||
<a href="#1138" id="1138">1138</a>
|
||||
<a href="#1139" id="1139">1139</a>
|
||||
<a href="#1140" id="1140">1140</a>
|
||||
<a href="#1141" id="1141">1141</a>
|
||||
<a href="#1142" id="1142">1142</a>
|
||||
<a href="#1143" id="1143">1143</a>
|
||||
<a href="#1144" id="1144">1144</a>
|
||||
<a href="#1145" id="1145">1145</a>
|
||||
<a href="#1146" id="1146">1146</a>
|
||||
<a href="#1147" id="1147">1147</a>
|
||||
<a href="#1148" id="1148">1148</a>
|
||||
<a href="#1149" id="1149">1149</a>
|
||||
<a href="#1150" id="1150">1150</a>
|
||||
<a href="#1151" id="1151">1151</a>
|
||||
<a href="#1152" id="1152">1152</a>
|
||||
<a href="#1153" id="1153">1153</a>
|
||||
<a href="#1154" id="1154">1154</a>
|
||||
<a href="#1155" id="1155">1155</a>
|
||||
<a href="#1156" id="1156">1156</a>
|
||||
<a href="#1157" id="1157">1157</a>
|
||||
<a href="#1158" id="1158">1158</a>
|
||||
<a href="#1159" id="1159">1159</a>
|
||||
<a href="#1160" id="1160">1160</a>
|
||||
<a href="#1161" id="1161">1161</a>
|
||||
<a href="#1162" id="1162">1162</a>
|
||||
<a href="#1163" id="1163">1163</a>
|
||||
<a href="#1164" id="1164">1164</a>
|
||||
<a href="#1165" id="1165">1165</a>
|
||||
<a href="#1166" id="1166">1166</a>
|
||||
<a href="#1167" id="1167">1167</a>
|
||||
<a href="#1168" id="1168">1168</a>
|
||||
<a href="#1169" id="1169">1169</a>
|
||||
<a href="#1170" id="1170">1170</a>
|
||||
<a href="#1171" id="1171">1171</a>
|
||||
<a href="#1172" id="1172">1172</a>
|
||||
<a href="#1173" id="1173">1173</a>
|
||||
<a href="#1174" id="1174">1174</a>
|
||||
<a href="#1175" id="1175">1175</a>
|
||||
<a href="#1176" id="1176">1176</a>
|
||||
<a href="#1177" id="1177">1177</a>
|
||||
<a href="#1178" id="1178">1178</a>
|
||||
<a href="#1179" id="1179">1179</a>
|
||||
<a href="#1180" id="1180">1180</a>
|
||||
<a href="#1181" id="1181">1181</a>
|
||||
<a href="#1182" id="1182">1182</a>
|
||||
<a href="#1183" id="1183">1183</a>
|
||||
<a href="#1184" id="1184">1184</a>
|
||||
<a href="#1185" id="1185">1185</a>
|
||||
<a href="#1186" id="1186">1186</a>
|
||||
<a href="#1187" id="1187">1187</a>
|
||||
<a href="#1188" id="1188">1188</a>
|
||||
<a href="#1189" id="1189">1189</a>
|
||||
<a href="#1190" id="1190">1190</a>
|
||||
<a href="#1191" id="1191">1191</a>
|
||||
<a href="#1192" id="1192">1192</a>
|
||||
<a href="#1193" id="1193">1193</a>
|
||||
<a href="#1194" id="1194">1194</a>
|
||||
<a href="#1195" id="1195">1195</a>
|
||||
<a href="#1196" id="1196">1196</a>
|
||||
<a href="#1197" id="1197">1197</a>
|
||||
<a href="#1198" id="1198">1198</a>
|
||||
<a href="#1199" id="1199">1199</a>
|
||||
<a href="#1200" id="1200">1200</a>
|
||||
<a href="#1201" id="1201">1201</a>
|
||||
<a href="#1202" id="1202">1202</a>
|
||||
<a href="#1203" id="1203">1203</a>
|
||||
<a href="#1204" id="1204">1204</a>
|
||||
<a href="#1205" id="1205">1205</a>
|
||||
<a href="#1206" id="1206">1206</a>
|
||||
<a href="#1207" id="1207">1207</a>
|
||||
<a href="#1208" id="1208">1208</a>
|
||||
<a href="#1209" id="1209">1209</a>
|
||||
<a href="#1210" id="1210">1210</a>
|
||||
<a href="#1211" id="1211">1211</a>
|
||||
<a href="#1212" id="1212">1212</a>
|
||||
<a href="#1213" id="1213">1213</a>
|
||||
<a href="#1214" id="1214">1214</a>
|
||||
<a href="#1215" id="1215">1215</a>
|
||||
<a href="#1216" id="1216">1216</a>
|
||||
<a href="#1217" id="1217">1217</a>
|
||||
<a href="#1218" id="1218">1218</a>
|
||||
<a href="#1219" id="1219">1219</a>
|
||||
<a href="#1220" id="1220">1220</a>
|
||||
<a href="#1221" id="1221">1221</a>
|
||||
<a href="#1222" id="1222">1222</a>
|
||||
<a href="#1223" id="1223">1223</a>
|
||||
<a href="#1224" id="1224">1224</a>
|
||||
<a href="#1225" id="1225">1225</a>
|
||||
<a href="#1226" id="1226">1226</a>
|
||||
<a href="#1227" id="1227">1227</a>
|
||||
<a href="#1228" id="1228">1228</a>
|
||||
<a href="#1229" id="1229">1229</a>
|
||||
<a href="#1230" id="1230">1230</a>
|
||||
<a href="#1231" id="1231">1231</a>
|
||||
<a href="#1232" id="1232">1232</a>
|
||||
<a href="#1233" id="1233">1233</a>
|
||||
<a href="#1234" id="1234">1234</a>
|
||||
<a href="#1235" id="1235">1235</a>
|
||||
<a href="#1236" id="1236">1236</a>
|
||||
<a href="#1237" id="1237">1237</a>
|
||||
<a href="#1238" id="1238">1238</a>
|
||||
<a href="#1239" id="1239">1239</a>
|
||||
<a href="#1240" id="1240">1240</a>
|
||||
<a href="#1241" id="1241">1241</a>
|
||||
<a href="#1242" id="1242">1242</a>
|
||||
<a href="#1243" id="1243">1243</a>
|
||||
<a href="#1244" id="1244">1244</a>
|
||||
<a href="#1245" id="1245">1245</a>
|
||||
<a href="#1246" id="1246">1246</a>
|
||||
<a href="#1247" id="1247">1247</a>
|
||||
<a href="#1248" id="1248">1248</a>
|
||||
<a href="#1249" id="1249">1249</a>
|
||||
<a href="#1250" id="1250">1250</a>
|
||||
<a href="#1251" id="1251">1251</a>
|
||||
<a href="#1252" id="1252">1252</a>
|
||||
<a href="#1253" id="1253">1253</a>
|
||||
<a href="#1254" id="1254">1254</a>
|
||||
<a href="#1255" id="1255">1255</a>
|
||||
<a href="#1256" id="1256">1256</a>
|
||||
<a href="#1257" id="1257">1257</a>
|
||||
<a href="#1258" id="1258">1258</a>
|
||||
<a href="#1259" id="1259">1259</a>
|
||||
<a href="#1260" id="1260">1260</a>
|
||||
<a href="#1261" id="1261">1261</a>
|
||||
<a href="#1262" id="1262">1262</a>
|
||||
<a href="#1263" id="1263">1263</a>
|
||||
<a href="#1264" id="1264">1264</a>
|
||||
<a href="#1265" id="1265">1265</a>
|
||||
<a href="#1266" id="1266">1266</a>
|
||||
</pre></div><pre class="rust"><code><span class="kw">use </span>serde::Deserialize;
|
||||
|
||||
<span class="kw">use </span>serde::de::IntoDeserializer;
|
||||
@@ -1281,6 +1468,82 @@
|
||||
}
|
||||
}
|
||||
|
||||
<span class="kw">fn </span>ignore_int(<span class="kw-2">&mut </span><span class="self">self</span>, major: u8) -> <span class="prelude-ty">Result</span><()> {
|
||||
<span class="kw">let </span>additional = <span class="self">self</span>.expect_major(major)<span class="question-mark">?</span>;
|
||||
<span class="kw">match </span>additional {
|
||||
<span class="number">0</span>..=<span class="number">23 </span>=> {}
|
||||
<span class="number">24 </span>=> {
|
||||
<span class="self">self</span>.try_take_n(<span class="number">1</span>)<span class="question-mark">?</span>;
|
||||
}
|
||||
<span class="number">25 </span>=> {
|
||||
<span class="self">self</span>.try_take_n(<span class="number">2</span>)<span class="question-mark">?</span>;
|
||||
}
|
||||
<span class="number">26 </span>=> {
|
||||
<span class="self">self</span>.try_take_n(<span class="number">4</span>)<span class="question-mark">?</span>;
|
||||
}
|
||||
<span class="number">27 </span>=> {
|
||||
<span class="self">self</span>.try_take_n(<span class="number">8</span>)<span class="question-mark">?</span>;
|
||||
}
|
||||
<span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(Error::DeserializeBadU16),
|
||||
};
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
|
||||
<span class="kw">fn </span>ignore_bytes(<span class="kw-2">&mut </span><span class="self">self</span>, major: u8) -> <span class="prelude-ty">Result</span><()> {
|
||||
<span class="kw">let </span>length = <span class="self">self</span>.raw_deserialize_u32(major)<span class="question-mark">? </span><span class="kw">as </span>usize;
|
||||
<span class="self">self</span>.try_take_n(length)<span class="question-mark">?</span>;
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
|
||||
<span class="kw">fn </span>ignore_array(<span class="kw-2">&mut </span><span class="self">self</span>, major: u8, mult: usize) -> <span class="prelude-ty">Result</span><()> {
|
||||
<span class="kw">let </span>length = <span class="self">self</span>.raw_deserialize_u32(major)<span class="question-mark">? </span><span class="kw">as </span>usize;
|
||||
<span class="kw">let </span><span class="prelude-val">Some</span>(real_length) = length.checked_mul(mult) <span class="kw">else </span>{
|
||||
<span class="kw">return </span><span class="prelude-val">Err</span>(Error::InexistentSliceToArrayError);
|
||||
};
|
||||
<span class="kw">for _ in </span><span class="number">0</span>..real_length {
|
||||
<span class="self">self</span>.ignore()<span class="question-mark">?</span>;
|
||||
}
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
|
||||
<span class="kw">fn </span>ignore_float(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><()> {
|
||||
<span class="kw">let </span>additional = <span class="self">self</span>.expect_major(<span class="number">7</span>)<span class="question-mark">?</span>;
|
||||
<span class="kw">match </span>additional {
|
||||
<span class="number">0</span>..=<span class="number">23 </span>=> {}
|
||||
<span class="number">24 </span>=> {
|
||||
<span class="self">self</span>.try_take_n(<span class="number">1</span>)<span class="question-mark">?</span>;
|
||||
}
|
||||
<span class="number">25 </span>=> {
|
||||
<span class="self">self</span>.try_take_n(<span class="number">2</span>)<span class="question-mark">?</span>;
|
||||
}
|
||||
<span class="number">26 </span>=> {
|
||||
<span class="self">self</span>.try_take_n(<span class="number">4</span>)<span class="question-mark">?</span>;
|
||||
}
|
||||
<span class="number">27 </span>=> {
|
||||
<span class="self">self</span>.try_take_n(<span class="number">8</span>)<span class="question-mark">?</span>;
|
||||
}
|
||||
<span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(Error::DeserializeBadMajor),
|
||||
};
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
|
||||
<span class="kw">fn </span>ignore(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><()> {
|
||||
<span class="kw">let </span>major = <span class="self">self</span>.peek_major()<span class="question-mark">?</span>;
|
||||
<span class="kw">match </span>major {
|
||||
MAJOR_POSINT | MAJOR_NEGINT => <span class="self">self</span>.ignore_int(major)<span class="question-mark">?</span>,
|
||||
MAJOR_BYTES | MAJOR_STR => <span class="self">self</span>.ignore_bytes(major)<span class="question-mark">?</span>,
|
||||
MAJOR_ARRAY => <span class="self">self</span>.ignore_array(MAJOR_ARRAY, <span class="number">1</span>)<span class="question-mark">?</span>,
|
||||
MAJOR_MAP => <span class="self">self</span>.ignore_array(MAJOR_MAP, <span class="number">2</span>)<span class="question-mark">?</span>,
|
||||
<span class="number">6 </span>=> {
|
||||
<span class="self">self</span>.ignore_int(<span class="number">6</span>)<span class="question-mark">?</span>;
|
||||
<span class="self">self</span>.ignore()<span class="question-mark">?</span>;
|
||||
}
|
||||
MAJOR_FLOAT => <span class="self">self</span>.ignore_float()<span class="question-mark">?</span>,
|
||||
<span class="kw">_ </span>=> <span class="kw">return </span><span class="prelude-val">Err</span>(Error::DeserializeBadMajor),
|
||||
}
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
|
||||
<span class="comment">// fn try_take_varint(&mut self) -> Result<usize> {
|
||||
// for i in 0..VarintUsize::varint_usize_max() {
|
||||
// let val = self.input.get(i).ok_or(Error::DeserializeUnexpectedEnd)?;
|
||||
@@ -1514,11 +1777,26 @@
|
||||
}
|
||||
}
|
||||
|
||||
<span class="kw">fn </span>deserialize_i64<V>(<span class="self">self</span>, _visitor: V) -> <span class="prelude-ty">Result</span><V::Value>
|
||||
<span class="kw">fn </span>deserialize_i64<V>(<span class="self">self</span>, visitor: V) -> <span class="prelude-ty">Result</span><V::Value>
|
||||
<span class="kw">where
|
||||
</span>V: Visitor<<span class="lifetime">'de</span>>,
|
||||
{
|
||||
<span class="prelude-val">Err</span>(Error::NotYetImplemented)
|
||||
<span class="kw">match </span><span class="self">self</span>.peek_major()<span class="question-mark">? </span>{
|
||||
<span class="comment">// TODO: figure out if this is BAAAAD for size or speed
|
||||
</span>major @ <span class="number">0</span>..=<span class="number">1 </span>=> {
|
||||
<span class="kw">let </span>raw = <span class="self">self</span>.raw_deserialize_u64(major)<span class="question-mark">?</span>;
|
||||
<span class="kw">if </span>raw <= i64::max_value() <span class="kw">as </span>u64 {
|
||||
<span class="kw">if </span>major == MAJOR_POSINT {
|
||||
visitor.visit_i64(raw <span class="kw">as </span>i64)
|
||||
} <span class="kw">else </span>{
|
||||
visitor.visit_i64(-<span class="number">1 </span>- (raw <span class="kw">as </span>i64))
|
||||
}
|
||||
} <span class="kw">else </span>{
|
||||
<span class="prelude-val">Err</span>(Error::DeserializeBadI64)
|
||||
}
|
||||
}
|
||||
<span class="kw">_ </span>=> <span class="prelude-val">Err</span>(Error::DeserializeBadI16),
|
||||
}
|
||||
}
|
||||
|
||||
<span class="kw">fn </span>deserialize_u8<V>(<span class="self">self</span>, visitor: V) -> <span class="prelude-ty">Result</span><V::Value>
|
||||
@@ -1785,7 +2063,8 @@
|
||||
</span>V: Visitor<<span class="lifetime">'de</span>>,
|
||||
{
|
||||
<span class="comment">// Ignore extra fields/options
|
||||
</span>visitor.visit_none()
|
||||
</span><span class="self">self</span>.ignore()<span class="question-mark">?</span>;
|
||||
visitor.visit_none()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1869,6 +2148,7 @@
|
||||
|
||||
</span><span class="attr">#[cfg(test)]
|
||||
</span><span class="kw">mod </span>tests {
|
||||
|
||||
<span class="comment">// use super::*;
|
||||
</span><span class="kw">use </span><span class="kw">super</span>::from_bytes;
|
||||
|
||||
@@ -2142,6 +2422,100 @@
|
||||
<span class="macro">assert_eq!</span>(de, e);
|
||||
}
|
||||
|
||||
<span class="attr">#[test]
|
||||
</span><span class="kw">fn </span>de_ignored_any() {
|
||||
<span class="kw">use </span>serde::de::IgnoredAny;
|
||||
<span class="kw">use </span>serde::{Deserialize, Serialize};
|
||||
|
||||
<span class="attr">#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug)]
|
||||
</span><span class="kw">pub struct </span>ValOuter<<span class="lifetime">'a</span>> {
|
||||
inner: Outer<<span class="lifetime">'a</span>>,
|
||||
val: <span class="kw-2">&</span><span class="lifetime">'a </span>str,
|
||||
}
|
||||
<span class="attr">#[derive(Deserialize)]
|
||||
</span><span class="kw">pub struct </span>ValIgnored<<span class="lifetime">'a</span>> {
|
||||
<span class="attr">#[allow(unused)]
|
||||
</span>inner: IgnoredAny,
|
||||
val: <span class="kw-2">&</span><span class="lifetime">'a </span>str,
|
||||
}
|
||||
|
||||
<span class="attr">#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug)]
|
||||
</span><span class="kw">pub struct </span>Inner<<span class="lifetime">'a</span>> {
|
||||
u8: u8,
|
||||
u16: u16,
|
||||
u32: u32,
|
||||
u64: u64,
|
||||
i8: i8,
|
||||
i16: i16,
|
||||
i32: i32,
|
||||
i64: i64,
|
||||
str: <span class="kw-2">&</span><span class="lifetime">'a </span>str,
|
||||
option: <span class="prelude-ty">Option</span><<span class="kw-2">&</span><span class="lifetime">'a </span>str>,
|
||||
<span class="attr">#[serde(with = <span class="string">"serde_bytes"</span>)]
|
||||
</span>bytes: <span class="kw-2">&</span><span class="lifetime">'a </span>[u8],
|
||||
unit: (),
|
||||
}
|
||||
<span class="attr">#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug)]
|
||||
</span><span class="kw">pub struct </span>Outer<<span class="lifetime">'a</span>> {
|
||||
u8: u8,
|
||||
u16: u16,
|
||||
u32: u32,
|
||||
u64: u64,
|
||||
i8: i8,
|
||||
i16: i16,
|
||||
i32: i32,
|
||||
i64: i64,
|
||||
str: <span class="kw-2">&</span><span class="lifetime">'a </span>str,
|
||||
<span class="attr">#[serde(with = <span class="string">"serde_bytes"</span>)]
|
||||
</span>bytes: <span class="kw-2">&</span><span class="lifetime">'a </span>[u8],
|
||||
unit: (),
|
||||
option: <span class="prelude-ty">Option</span><<span class="kw-2">&</span><span class="lifetime">'a </span>str>,
|
||||
nested: Inner<<span class="lifetime">'a</span>>,
|
||||
}
|
||||
|
||||
<span class="kw">let </span><span class="kw-2">mut </span>buf = [<span class="number">0</span>; <span class="number">1024</span>];
|
||||
<span class="kw">let </span>val = Outer {
|
||||
u8: u8::MAX,
|
||||
u16: u16::MAX,
|
||||
u32: u32::MAX,
|
||||
u64: u64::MAX,
|
||||
i8: i8::MIN,
|
||||
i16: i16::MIN,
|
||||
i32: i32::MIN,
|
||||
i64: i64::MIN,
|
||||
str: <span class="string">"string"</span>,
|
||||
bytes: <span class="string">b"bytes"</span>,
|
||||
unit: (),
|
||||
option: <span class="prelude-val">Some</span>(<span class="string">"option"</span>),
|
||||
nested: Inner {
|
||||
u8: <span class="number">0</span>,
|
||||
u16: <span class="number">0</span>,
|
||||
u32: <span class="number">0</span>,
|
||||
u64: <span class="number">0</span>,
|
||||
i8: i8::MIN,
|
||||
i16: i16::MIN,
|
||||
i32: i32::MIN,
|
||||
i64: i64::MIN,
|
||||
str: <span class="string">""</span>,
|
||||
option: <span class="prelude-val">None</span>,
|
||||
bytes: <span class="string">b""</span>,
|
||||
unit: (),
|
||||
},
|
||||
};
|
||||
<span class="kw">let </span>ser = cbor_serialize(<span class="kw-2">&</span>val, <span class="kw-2">&mut </span>buf).unwrap();
|
||||
<span class="kw">let _</span>: IgnoredAny = cbor_deserialize(ser).unwrap();
|
||||
|
||||
<span class="kw">let </span>val = ValOuter {
|
||||
inner: val,
|
||||
val: <span class="string">"value"</span>,
|
||||
};
|
||||
<span class="kw">let </span>ser = cbor_serialize(<span class="kw-2">&</span>val, <span class="kw-2">&mut </span>buf).unwrap();
|
||||
<span class="kw">let </span>de: ValOuter = cbor_deserialize(ser).unwrap();
|
||||
<span class="macro">assert_eq!</span>(val, de);
|
||||
<span class="kw">let </span>de: ValIgnored = cbor_deserialize(ser).unwrap();
|
||||
<span class="macro">assert_eq!</span>(de.val, <span class="string">"value"</span>);
|
||||
}
|
||||
|
||||
<span class="comment">// #[test]
|
||||
// fn fuzzer_things() {
|
||||
// let data: [u8; 2] = [160, 96];
|
||||
|
||||
@@ -145,6 +145,9 @@
|
||||
<a href="#145" id="145">145</a>
|
||||
<a href="#146" id="146">146</a>
|
||||
<a href="#147" id="147">147</a>
|
||||
<a href="#148" id="148">148</a>
|
||||
<a href="#149" id="149">149</a>
|
||||
<a href="#150" id="150">150</a>
|
||||
</pre></div><pre class="rust"><code><span class="attr">#![allow(unused_variables)]
|
||||
|
||||
</span><span class="kw">use </span>core::fmt::{Display, Formatter};
|
||||
@@ -189,6 +192,8 @@
|
||||
</span>DeserializeBadI16,
|
||||
<span class="doccomment">/// Expected a i32, was too large
|
||||
</span>DeserializeBadI32,
|
||||
<span class="doccomment">/// Expected a i64, was too large
|
||||
</span>DeserializeBadI64,
|
||||
<span class="doccomment">/// Expected a u8
|
||||
</span>DeserializeBadU8,
|
||||
<span class="doccomment">/// Expected a u16
|
||||
@@ -238,6 +243,7 @@
|
||||
</span>DeserializeBadI8 => <span class="string">"Expected a i8"</span>,
|
||||
DeserializeBadI16 => <span class="string">"Expected a i16"</span>,
|
||||
DeserializeBadI32 => <span class="string">"Expected a i32"</span>,
|
||||
DeserializeBadI64 => <span class="string">"Expected a i64"</span>,
|
||||
DeserializeBadMajor => <span class="string">"Expected a different major type"</span>,
|
||||
DeserializeBadU8 => <span class="string">"Expected a u8"</span>,
|
||||
DeserializeBadU16 => <span class="string">"Expected a u16"</span>,
|
||||
|
||||
Reference in New Issue
Block a user