mirror of
https://github.com/serde-rs/serde.git
synced 2025-09-30 06:21:26 +00:00
51 lines
1.5 KiB
Rust
51 lines
1.5 KiB
Rust
#[cfg(not(no_serde_derive))]
|
|
pub mod de;
|
|
#[cfg(not(no_serde_derive))]
|
|
pub mod ser;
|
|
|
|
pub mod size_hint;
|
|
|
|
// FIXME: #[cfg(doctest)] once https://github.com/rust-lang/rust/issues/67295 is fixed.
|
|
pub mod doc;
|
|
|
|
pub use crate::lib::clone::Clone;
|
|
pub use crate::lib::convert::{From, Into};
|
|
pub use crate::lib::default::Default;
|
|
pub use crate::lib::fmt::{self, Formatter};
|
|
pub use crate::lib::marker::PhantomData;
|
|
pub use crate::lib::option::Option::{self, None, Some};
|
|
pub use crate::lib::ptr;
|
|
pub use crate::lib::result::Result::{self, Err, Ok};
|
|
|
|
pub use self::string::from_utf8_lossy;
|
|
|
|
#[cfg(any(feature = "alloc", feature = "std"))]
|
|
pub use crate::lib::{ToString, Vec};
|
|
|
|
#[cfg(not(no_core_try_from))]
|
|
pub use crate::lib::convert::TryFrom;
|
|
|
|
mod string {
|
|
use crate::lib::*;
|
|
|
|
#[cfg(any(feature = "std", feature = "alloc"))]
|
|
pub fn from_utf8_lossy(bytes: &[u8]) -> Cow<str> {
|
|
String::from_utf8_lossy(bytes)
|
|
}
|
|
|
|
// The generated code calls this like:
|
|
//
|
|
// let value = &_serde::__private::from_utf8_lossy(bytes);
|
|
// Err(_serde::de::Error::unknown_variant(value, VARIANTS))
|
|
//
|
|
// so it is okay for the return type to be different from the std case as long
|
|
// as the above works.
|
|
#[cfg(not(any(feature = "std", feature = "alloc")))]
|
|
pub fn from_utf8_lossy(bytes: &[u8]) -> &str {
|
|
// Three unicode replacement characters if it fails. They look like a
|
|
// white-on-black question mark. The user will recognize it as invalid
|
|
// UTF-8.
|
|
str::from_utf8(bytes).unwrap_or("\u{fffd}\u{fffd}\u{fffd}")
|
|
}
|
|
}
|