blob: 691589d26df2e88bd66a4a5bea7f1d406b85529c [file] [log] [blame]
//! Pure Rust implementation of Ryū, an algorithm to quickly convert floating
//! point numbers to decimal strings.
//! The PLDI'18 paper [*Ryū: fast float-to-string conversion*][paper] by Ulf
//! Adams includes a complete correctness proof of the algorithm. The paper is
//! available under the creative commons CC-BY-SA license.
//! This Rust implementation is a line-by-line port of Ulf Adams' implementation
//! in C, [][upstream]. The [`ryu::raw`][raw]
//! module exposes exactly the API and formatting of the C implementation as
//! unsafe pure Rust functions. There is additionally a safe API as demonstrated
//! in the example code below. The safe API uses the same underlying Ryū
//! algorithm but diverges from the formatting of the C implementation to
//! produce more human-readable output, for example `0.3` rather than `3E-1`.
//! [paper]:
//! [upstream]:
//! [raw]: raw/index.html
//! # Examples
//! ```rust
//! extern crate ryu;
//! fn main() {
//! let mut buffer = ryu::Buffer::new();
//! let printed = buffer.format(1.234);
//! assert_eq!(printed, "1.234");
//! }
//! ```
#![doc(html_root_url = "")]
feature = "cargo-clippy",
#[cfg(feature = "no-panic")]
extern crate no_panic;
mod buffer;
mod common;
mod d2s;
#[cfg(not(feature = "small"))]
mod d2s_full_table;
mod d2s_intrinsics;
#[cfg(feature = "small")]
mod d2s_small_table;
mod digit_table;
mod f2s;
mod pretty;
pub use buffer::{Buffer, Float};
/// Unsafe functions that exactly mirror the API of the C implementation of Ryū.
pub mod raw {
pub use d2s::d2s_buffered_n;
pub use f2s::f2s_buffered_n;
pub use pretty::d2s_buffered_n as pretty_d2s_buffered_n;
pub use pretty::f2s_buffered_n as pretty_f2s_buffered_n;