Skip to content

Commit 23b594e

Browse files
committed
Make methods to create Unexpected i128/u128 values public
1 parent da3fde1 commit 23b594e

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

serde_core/src/de/mod.rs

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,30 @@ pub enum Unexpected<'a> {
399399
Other(&'a str),
400400
}
401401

402+
impl<'a> Unexpected<'a> {
403+
/// The input contained a signed integer `i128` that was not expected.
404+
pub fn invalid_i128<E>(v: i128, expected: &dyn Expected) -> E
405+
where
406+
E: Error,
407+
{
408+
let mut buf = [0u8; 58];
409+
let mut writer = crate::format::Buf::new(&mut buf);
410+
fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as i128", v)).unwrap();
411+
Error::invalid_type(Unexpected::Other(writer.as_str()), expected)
412+
}
413+
414+
/// The input contained an unsigned integer `u128` that was not expected.
415+
pub fn invalid_u128<E>(v: u128, expected: &dyn Expected) -> E
416+
where
417+
E: Error,
418+
{
419+
let mut buf = [0u8; 57];
420+
let mut writer = crate::format::Buf::new(&mut buf);
421+
fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as u128", v)).unwrap();
422+
Error::invalid_type(Unexpected::Other(writer.as_str()), expected)
423+
}
424+
}
425+
402426
impl<'a> fmt::Display for Unexpected<'a> {
403427
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
404428
use self::Unexpected::*;
@@ -1406,13 +1430,7 @@ pub trait Visitor<'de>: Sized {
14061430
where
14071431
E: Error,
14081432
{
1409-
let mut buf = [0u8; 58];
1410-
let mut writer = crate::format::Buf::new(&mut buf);
1411-
fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as i128", v)).unwrap();
1412-
Err(Error::invalid_type(
1413-
Unexpected::Other(writer.as_str()),
1414-
&self,
1415-
))
1433+
Err(Unexpected::invalid_i128(v, &self))
14161434
}
14171435

14181436
/// The input contains a `u8`.
@@ -1468,13 +1486,7 @@ pub trait Visitor<'de>: Sized {
14681486
where
14691487
E: Error,
14701488
{
1471-
let mut buf = [0u8; 57];
1472-
let mut writer = crate::format::Buf::new(&mut buf);
1473-
fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as u128", v)).unwrap();
1474-
Err(Error::invalid_type(
1475-
Unexpected::Other(writer.as_str()),
1476-
&self,
1477-
))
1489+
Err(Unexpected::invalid_u128(v, &self))
14781490
}
14791491

14801492
/// The input contains an `f32`.

0 commit comments

Comments
 (0)