Historically many `Display` and `Debug` implementations for `OsStr`-like abstractions have gone through `String::from_utf8_lossy`, but this was updated in #42613 to use an internal `Utf8Lossy` abstraction instead. This had the unfortunate side effect of causing a regression (#43765) in code which relied on these `fmt` trait implementations respecting the various formatting flags specified. This commit opportunistically adds back interpretation of formatting trait flags in the "common case" where where `OsStr`-like "thing" is all valid utf-8 and can delegate to the formatting implementation for `str`. This doesn't entirely solve the regression as non-utf8 paths will format differently than they did before still (in that they will not respect formatting flags), but this should solve the regression for all "real world" use cases of paths and such. The door's also still open for handling these flags in the future! Closes #43765
64 lines
2.1 KiB
Rust
64 lines
2.1 KiB
Rust
// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
|
|
// file at the top-level directory of this distribution and at
|
|
// http://rust-lang.org/COPYRIGHT.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
// option. This file may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
|
|
//! # The Unicode Library
|
|
//!
|
|
//! Unicode-intensive functions for `char` and `str` types.
|
|
//!
|
|
//! This crate provides a collection of Unicode-related functionality,
|
|
//! including decompositions, conversions, etc., and provides traits
|
|
//! implementing these functions for the `char` and `str` types.
|
|
//!
|
|
//! The functionality included here is only that which is necessary to
|
|
//! provide for basic string-related manipulations. This crate does not
|
|
//! (yet) aim to provide a full set of Unicode tables.
|
|
|
|
#![crate_name = "std_unicode"]
|
|
#![unstable(feature = "unicode", issue = "27783")]
|
|
#![crate_type = "rlib"]
|
|
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
|
html_favicon_url = "https://doc.rust-lang.org/favicon.ico",
|
|
html_root_url = "https://doc.rust-lang.org/nightly/",
|
|
html_playground_url = "https://play.rust-lang.org/",
|
|
issue_tracker_base_url = "https://github.com/rust-lang/rust/issues/",
|
|
test(no_crate_inject, attr(allow(unused_variables), deny(warnings))))]
|
|
#![deny(warnings)]
|
|
#![no_std]
|
|
|
|
#![feature(core_char_ext)]
|
|
#![feature(str_internals)]
|
|
#![feature(decode_utf8)]
|
|
#![feature(fused)]
|
|
#![feature(fn_traits)]
|
|
#![feature(lang_items)]
|
|
#![feature(staged_api)]
|
|
#![feature(try_from)]
|
|
#![feature(unboxed_closures)]
|
|
|
|
mod tables;
|
|
mod u_str;
|
|
pub mod char;
|
|
pub mod lossy;
|
|
|
|
#[allow(deprecated)]
|
|
pub mod str {
|
|
pub use u_str::{SplitWhitespace, UnicodeStr};
|
|
pub use u_str::Utf16Encoder;
|
|
}
|
|
|
|
// For use in liballoc, not re-exported in libstd.
|
|
pub mod derived_property {
|
|
pub use tables::derived_property::{Case_Ignorable, Cased};
|
|
}
|
|
|
|
// For use in libsyntax
|
|
pub mod property {
|
|
pub use tables::property::Pattern_White_Space;
|
|
}
|