parent
9f3e867f04
commit
70883abe4d
|
@ -13,5 +13,7 @@ matrix:
|
||||||
script:
|
script:
|
||||||
- cargo build --verbose --features "$FEATURES"
|
- cargo build --verbose --features "$FEATURES"
|
||||||
- cargo test --verbose --features "$FEATURES"
|
- cargo test --verbose --features "$FEATURES"
|
||||||
|
- cargo build --verbose --no-default-features --features "$FEATURES"
|
||||||
|
- cargo test --verbose --no-default-features --features "$FEATURES"
|
||||||
- if [ "$BUILD_BENCH" == "true" ]; then cargo bench --verbose --no-run --features "$FEATURES"; fi
|
- if [ "$BUILD_BENCH" == "true" ]; then cargo bench --verbose --no-run --features "$FEATURES"; fi
|
||||||
|
|
||||||
|
|
|
@ -11,4 +11,6 @@ readme = "README.md"
|
||||||
exclude = ["performance.png"]
|
exclude = ["performance.png"]
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
|
default = ["std"]
|
||||||
i128 = []
|
i128 = []
|
||||||
|
std = []
|
||||||
|
|
|
@ -53,6 +53,9 @@ where `itoa::Integer` is implemented for `i8`, `u8`, `i16`, `u16`, `i32`, `u32`,
|
||||||
only available with the nightly compiler when the `i128` feature is enabled for
|
only available with the nightly compiler when the `i128` feature is enabled for
|
||||||
this crate. The return value gives the number of bytes written.
|
this crate. The return value gives the number of bytes written.
|
||||||
|
|
||||||
|
The `write` function is only available when the `std` feature is enabled
|
||||||
|
(default is enabled).
|
||||||
|
|
||||||
## Dependency
|
## Dependency
|
||||||
|
|
||||||
Itoa is available on [crates.io](https://crates.io/crates/itoa). Use the
|
Itoa is available on [crates.io](https://crates.io/crates/itoa). Use the
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
|
|
||||||
#![doc(html_root_url = "https://docs.rs/itoa/0.3.4")]
|
#![doc(html_root_url = "https://docs.rs/itoa/0.3.4")]
|
||||||
|
|
||||||
|
#![cfg_attr(not(feature = "std"), no_std)]
|
||||||
|
|
||||||
#![cfg_attr(feature = "i128", feature(i128_type, i128))]
|
#![cfg_attr(feature = "i128", feature(i128_type, i128))]
|
||||||
|
|
||||||
#![cfg_attr(feature = "cargo-clippy", allow(cast_lossless, unreadable_literal))]
|
#![cfg_attr(feature = "cargo-clippy", allow(cast_lossless, unreadable_literal))]
|
||||||
|
@ -15,8 +17,13 @@
|
||||||
#[cfg(feature = "i128")]
|
#[cfg(feature = "i128")]
|
||||||
mod udiv128;
|
mod udiv128;
|
||||||
|
|
||||||
|
#[cfg(feature = "std")]
|
||||||
use std::{fmt, io, mem, ptr, slice, str};
|
use std::{fmt, io, mem, ptr, slice, str};
|
||||||
|
|
||||||
|
#[cfg(not(feature = "std"))]
|
||||||
|
use core::{fmt, mem, ptr, slice, str};
|
||||||
|
|
||||||
|
#[cfg(feature = "std")]
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn write<W: io::Write, V: Integer>(wr: W, value: V) -> io::Result<usize> {
|
pub fn write<W: io::Write, V: Integer>(wr: W, value: V) -> io::Result<usize> {
|
||||||
value.write(wr)
|
value.write(wr)
|
||||||
|
@ -33,6 +40,7 @@ mod private {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait Integer: private::Sealed {
|
pub trait Integer: private::Sealed {
|
||||||
|
#[cfg(feature = "std")]
|
||||||
fn write<W: io::Write>(self, W) -> io::Result<usize>;
|
fn write<W: io::Write>(self, W) -> io::Result<usize>;
|
||||||
|
|
||||||
fn fmt<W: fmt::Write>(self, W) -> fmt::Result;
|
fn fmt<W: fmt::Write>(self, W) -> fmt::Result;
|
||||||
|
@ -56,6 +64,7 @@ const MAX_LEN: usize = 40; // i128::MIN (including minus sign)
|
||||||
macro_rules! impl_IntegerCommon {
|
macro_rules! impl_IntegerCommon {
|
||||||
($t:ident) => {
|
($t:ident) => {
|
||||||
impl Integer for $t {
|
impl Integer for $t {
|
||||||
|
#[cfg(feature = "std")]
|
||||||
fn write<W: io::Write>(self, mut wr: W) -> io::Result<usize> {
|
fn write<W: io::Write>(self, mut wr: W) -> io::Result<usize> {
|
||||||
let mut buf = unsafe { mem::uninitialized() };
|
let mut buf = unsafe { mem::uninitialized() };
|
||||||
let bytes = self.write_to(&mut buf);
|
let bytes = self.write_to(&mut buf);
|
||||||
|
|
|
@ -17,9 +17,12 @@ macro_rules! test {
|
||||||
$(#[$attr])*
|
$(#[$attr])*
|
||||||
#[test]
|
#[test]
|
||||||
fn $name() {
|
fn $name() {
|
||||||
let mut buf = [b'\0'; 40];
|
#[cfg(feature = "std")]
|
||||||
let len = itoa::write(&mut buf[..], $value).unwrap();
|
{
|
||||||
assert_eq!(&buf[0..len], $expected.as_bytes());
|
let mut buf = [b'\0'; 40];
|
||||||
|
let len = itoa::write(&mut buf[..], $value).unwrap();
|
||||||
|
assert_eq!(&buf[0..len], $expected.as_bytes());
|
||||||
|
}
|
||||||
|
|
||||||
let mut s = String::new();
|
let mut s = String::new();
|
||||||
itoa::fmt(&mut s, $value).unwrap();
|
itoa::fmt(&mut s, $value).unwrap();
|
||||||
|
|
Loading…
Reference in New Issue