Move ToString to collections::string
This also impls `FormatWriter` for `Vec<u8>`
This commit is contained in:
parent
59abf75d9e
commit
d82a7ea57a
@ -808,6 +808,20 @@ pub trait IntoString {
|
||||
fn into_string(self) -> String;
|
||||
}
|
||||
|
||||
/// A generic trait for converting a value to a string
|
||||
pub trait ToString {
|
||||
/// Converts the value of `self` to an owned string
|
||||
fn to_string(&self) -> String;
|
||||
}
|
||||
|
||||
impl<T: fmt::Show> ToString for T {
|
||||
fn to_string(&self) -> String {
|
||||
let mut buf = Vec::<u8>::new();
|
||||
let _ = format_args!(|args| fmt::write(&mut buf, args), "{}", self);
|
||||
String::from_utf8(buf).unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
/// Unsafe operations
|
||||
#[unstable = "waiting on raw module conventions"]
|
||||
pub mod raw {
|
||||
@ -873,7 +887,7 @@ mod tests {
|
||||
|
||||
use str;
|
||||
use str::{Str, StrPrelude, Owned};
|
||||
use super::{as_string, String};
|
||||
use super::{as_string, String, ToString};
|
||||
use vec::Vec;
|
||||
use slice::CloneSliceAllocPrelude;
|
||||
|
||||
@ -1177,6 +1191,28 @@ mod tests {
|
||||
assert_eq!("oob", s[1..4]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_simple_types() {
|
||||
assert_eq!(1i.to_string(), "1".to_string());
|
||||
assert_eq!((-1i).to_string(), "-1".to_string());
|
||||
assert_eq!(200u.to_string(), "200".to_string());
|
||||
assert_eq!(2u8.to_string(), "2".to_string());
|
||||
assert_eq!(true.to_string(), "true".to_string());
|
||||
assert_eq!(false.to_string(), "false".to_string());
|
||||
assert_eq!(().to_string(), "()".to_string());
|
||||
assert_eq!(("hi".to_string()).to_string(), "hi".to_string());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_vectors() {
|
||||
let x: Vec<int> = vec![];
|
||||
assert_eq!(x.to_string(), "[]".to_string());
|
||||
assert_eq!((vec![1i]).to_string(), "[1]".to_string());
|
||||
assert_eq!((vec![1i, 2, 3]).to_string(), "[1, 2, 3]".to_string());
|
||||
assert!((vec![vec![], vec![1i], vec![1i, 1]]).to_string() ==
|
||||
"[[], [1], [1, 1]]".to_string());
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn bench_with_capacity(b: &mut Bencher) {
|
||||
b.iter(|| {
|
||||
|
@ -1653,6 +1653,13 @@ impl<T> Vec<T> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> fmt::FormatWriter for Vec<u8> {
|
||||
fn write(&mut self, buf: &[u8]) -> fmt::Result {
|
||||
self.push_all(buf);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
extern crate test;
|
||||
|
@ -220,7 +220,6 @@ pub mod time;
|
||||
|
||||
pub mod error;
|
||||
pub mod num;
|
||||
pub mod to_string;
|
||||
|
||||
/* Common data structures */
|
||||
|
||||
|
@ -423,7 +423,7 @@ static DIGIT_E_RADIX: uint = ('e' as uint) - ('a' as uint) + 11u;
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use to_string::ToString;
|
||||
use string::ToString;
|
||||
|
||||
#[test]
|
||||
fn test_int_to_str_overflow() {
|
||||
|
@ -51,8 +51,7 @@ use result::{Err, Ok, Result};
|
||||
use slice::{AsSlice, SlicePrelude, PartialEqSlicePrelude};
|
||||
use slice::CloneSliceAllocPrelude;
|
||||
use str::{Str, StrPrelude, StrAllocating};
|
||||
use string::String;
|
||||
use to_string::ToString;
|
||||
use string::{String, ToString};
|
||||
use sync::atomic::{AtomicInt, INIT_ATOMIC_INT, SeqCst};
|
||||
use vec::Vec;
|
||||
|
||||
|
@ -76,14 +76,13 @@
|
||||
#[doc(no_inline)] pub use io::{Buffer, Writer, Reader, Seek};
|
||||
#[doc(no_inline)] pub use str::{Str, StrVector, StrPrelude};
|
||||
#[doc(no_inline)] pub use str::{IntoMaybeOwned, StrAllocating, UnicodeStrPrelude};
|
||||
#[doc(no_inline)] pub use to_string::ToString;
|
||||
#[doc(no_inline)] pub use tuple::{Tuple1, Tuple2, Tuple3, Tuple4};
|
||||
#[doc(no_inline)] pub use tuple::{Tuple5, Tuple6, Tuple7, Tuple8};
|
||||
#[doc(no_inline)] pub use tuple::{Tuple9, Tuple10, Tuple11, Tuple12};
|
||||
#[doc(no_inline)] pub use slice::{SlicePrelude, AsSlice, CloneSlicePrelude};
|
||||
#[doc(no_inline)] pub use slice::{VectorVector, PartialEqSlicePrelude, OrdSlicePrelude};
|
||||
#[doc(no_inline)] pub use slice::{CloneSliceAllocPrelude, OrdSliceAllocPrelude, SliceAllocPrelude};
|
||||
#[doc(no_inline)] pub use string::{IntoString, String};
|
||||
#[doc(no_inline)] pub use string::{IntoString, String, ToString};
|
||||
#[doc(no_inline)] pub use vec::Vec;
|
||||
|
||||
// Reexported runtime types
|
||||
|
@ -105,9 +105,8 @@ use rt::local::Local;
|
||||
use rt::task;
|
||||
use rt::task::Task;
|
||||
use str::{Str, SendStr, IntoMaybeOwned};
|
||||
use string::String;
|
||||
use string::{String, ToString};
|
||||
use sync::Future;
|
||||
use to_string::ToString;
|
||||
|
||||
/// A means of spawning a task
|
||||
pub trait Spawner {
|
||||
|
@ -388,7 +388,7 @@ mod tests {
|
||||
use super::{Duration, MIN, MAX};
|
||||
use {i32, i64};
|
||||
use option::{Some, None};
|
||||
use to_string::ToString;
|
||||
use string::ToString;
|
||||
|
||||
#[test]
|
||||
fn test_duration() {
|
||||
|
@ -1,60 +0,0 @@
|
||||
// Copyright 2012-2013 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 `ToString` trait for converting to strings
|
||||
|
||||
*/
|
||||
|
||||
#![experimental]
|
||||
|
||||
use fmt;
|
||||
use string::String;
|
||||
|
||||
/// A generic trait for converting a value to a string
|
||||
pub trait ToString {
|
||||
/// Converts the value of `self` to an owned string
|
||||
fn to_string(&self) -> String;
|
||||
}
|
||||
|
||||
impl<T: fmt::Show> ToString for T {
|
||||
fn to_string(&self) -> String {
|
||||
format!("{}", *self)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use prelude::*;
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_simple_types() {
|
||||
assert_eq!(1i.to_string(), "1".to_string());
|
||||
assert_eq!((-1i).to_string(), "-1".to_string());
|
||||
assert_eq!(200u.to_string(), "200".to_string());
|
||||
assert_eq!(2u8.to_string(), "2".to_string());
|
||||
assert_eq!(true.to_string(), "true".to_string());
|
||||
assert_eq!(false.to_string(), "false".to_string());
|
||||
assert_eq!(().to_string(), "()".to_string());
|
||||
assert_eq!(("hi".to_string()).to_string(), "hi".to_string());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_vectors() {
|
||||
let x: Vec<int> = vec![];
|
||||
assert_eq!(x.to_string(), "[]".to_string());
|
||||
assert_eq!((vec![1i]).to_string(), "[1]".to_string());
|
||||
assert_eq!((vec![1i, 2, 3]).to_string(), "[1, 2, 3]".to_string());
|
||||
assert!((vec![vec![], vec![1i], vec![1i, 1]]).to_string() ==
|
||||
"[[], [1], [1, 1]]".to_string());
|
||||
}
|
||||
}
|
@ -11,7 +11,7 @@
|
||||
// aux-build:cci_class_cast.rs
|
||||
extern crate cci_class_cast;
|
||||
|
||||
use std::to_string::ToString;
|
||||
use std::string::ToString;
|
||||
use cci_class_cast::kitty::cat;
|
||||
|
||||
fn print_out(thing: Box<ToString>, expected: String) {
|
||||
|
@ -11,7 +11,7 @@
|
||||
extern crate collections;
|
||||
|
||||
use std::str::{SendStr, Owned, Slice};
|
||||
use std::to_string::ToString;
|
||||
use std::string::ToString;
|
||||
use self::collections::TreeMap;
|
||||
use std::option::Some;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user