Skip to content

Commit 15152ec

Browse files
committed
Make methods to create Unexpected i128/u128 values public
1 parent b258666 commit 15152ec

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

serde/src/de/mod.rs

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

398+
impl<'a> Unexpected<'a> {
399+
/// The input contained a signed integer `i128` that was not expected.
400+
pub fn invalid_i128<E>(v: i128, expected: &Expected) -> E
401+
where
402+
E: Error,
403+
{
404+
let mut buf = [0u8; 57];
405+
let mut writer = format::Buf::new(&mut buf);
406+
fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as i128", v)).unwrap();
407+
Error::invalid_type(Unexpected::Other(writer.as_str()), expected)
408+
}
409+
410+
/// The input contained an unsigned integer `u128` that was not expected.
411+
pub fn invalid_u128<E>(v: u128, expected: &Expected) -> E
412+
where
413+
E: Error,
414+
{
415+
let mut buf = [0u8; 57];
416+
let mut writer = format::Buf::new(&mut buf);
417+
fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as u128", v)).unwrap();
418+
Error::invalid_type(Unexpected::Other(writer.as_str()), expected)
419+
}
420+
}
421+
398422
impl<'a> fmt::Display for Unexpected<'a> {
399423
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
400424
use self::Unexpected::*;
@@ -1373,13 +1397,7 @@ pub trait Visitor<'de>: Sized {
13731397
where
13741398
E: Error,
13751399
{
1376-
let mut buf = [0u8; 58];
1377-
let mut writer = format::Buf::new(&mut buf);
1378-
fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as i128", v)).unwrap();
1379-
Err(Error::invalid_type(
1380-
Unexpected::Other(writer.as_str()),
1381-
&self,
1382-
))
1400+
Err(Unexpected::invalid_i128(v, &self))
13831401
}
13841402

13851403
/// The input contains a `u8`.
@@ -1435,13 +1453,7 @@ pub trait Visitor<'de>: Sized {
14351453
where
14361454
E: Error,
14371455
{
1438-
let mut buf = [0u8; 57];
1439-
let mut writer = format::Buf::new(&mut buf);
1440-
fmt::Write::write_fmt(&mut writer, format_args!("integer `{}` as u128", v)).unwrap();
1441-
Err(Error::invalid_type(
1442-
Unexpected::Other(writer.as_str()),
1443-
&self,
1444-
))
1456+
Err(Unexpected::invalid_u128(v, &self))
14451457
}
14461458

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

0 commit comments

Comments
 (0)