Skip to content

Commit 7b9302b

Browse files
committed
Make methods to create Unexpected i128/u128 values public
1 parent dd68041 commit 7b9302b

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
@@ -394,6 +394,30 @@ pub enum Unexpected<'a> {
394394
Other(&'a str),
395395
}
396396

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

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

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

0 commit comments

Comments
 (0)