Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deny bare trait objects in src/libserialize #52299

Merged
merged 1 commit into from Jul 13, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
16 changes: 8 additions & 8 deletions src/libserialize/json.rs
Expand Up @@ -371,7 +371,7 @@ impl From<fmt::Error> for EncoderError {
pub type EncodeResult = Result<(), EncoderError>;
pub type DecodeResult<T> = Result<T, DecoderError>;

fn escape_str(wr: &mut fmt::Write, v: &str) -> EncodeResult {
fn escape_str(wr: &mut dyn fmt::Write, v: &str) -> EncodeResult {
wr.write_str("\"")?;

let mut start = 0;
Expand Down Expand Up @@ -433,11 +433,11 @@ fn escape_str(wr: &mut fmt::Write, v: &str) -> EncodeResult {
Ok(())
}

fn escape_char(writer: &mut fmt::Write, v: char) -> EncodeResult {
fn escape_char(writer: &mut dyn fmt::Write, v: char) -> EncodeResult {
escape_str(writer, v.encode_utf8(&mut [0; 4]))
}

fn spaces(wr: &mut fmt::Write, mut n: usize) -> EncodeResult {
fn spaces(wr: &mut dyn fmt::Write, mut n: usize) -> EncodeResult {
const BUF: &'static str = " ";

while n >= BUF.len() {
Expand All @@ -461,14 +461,14 @@ fn fmt_number_or_null(v: f64) -> string::String {

/// A structure for implementing serialization to JSON.
pub struct Encoder<'a> {
writer: &'a mut (fmt::Write+'a),
writer: &'a mut (dyn fmt::Write+'a),
is_emitting_map_key: bool,
}

impl<'a> Encoder<'a> {
/// Creates a new JSON encoder whose output will be written to the writer
/// specified.
pub fn new(writer: &'a mut fmt::Write) -> Encoder<'a> {
pub fn new(writer: &'a mut dyn fmt::Write) -> Encoder<'a> {
Encoder { writer: writer, is_emitting_map_key: false, }
}
}
Expand Down Expand Up @@ -707,15 +707,15 @@ impl<'a> ::Encoder for Encoder<'a> {
/// Another encoder for JSON, but prints out human-readable JSON instead of
/// compact data
pub struct PrettyEncoder<'a> {
writer: &'a mut (fmt::Write+'a),
writer: &'a mut (dyn fmt::Write+'a),
curr_indent: usize,
indent: usize,
is_emitting_map_key: bool,
}

impl<'a> PrettyEncoder<'a> {
/// Creates a new encoder whose output will be written to the specified writer
pub fn new(writer: &'a mut fmt::Write) -> PrettyEncoder<'a> {
pub fn new(writer: &'a mut dyn fmt::Write) -> PrettyEncoder<'a> {
PrettyEncoder {
writer,
curr_indent: 0,
Expand Down Expand Up @@ -2053,7 +2053,7 @@ impl<T: Iterator<Item=char>> Builder<T> {
}

/// Decodes a json value from an `&mut io::Read`
pub fn from_reader(rdr: &mut Read) -> Result<Json, BuilderError> {
pub fn from_reader(rdr: &mut dyn Read) -> Result<Json, BuilderError> {
let mut contents = Vec::new();
match rdr.read_to_end(&mut contents) {
Ok(c) => c,
Expand Down
2 changes: 2 additions & 0 deletions src/libserialize/lib.rs
Expand Up @@ -14,6 +14,8 @@
Core encoding and decoding interfaces.
*/

#![deny(bare_trait_objects)]

#![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/",
Expand Down