#[cfg(feature = "arbitrary-precision")]
fn main() -> Result<(), decstr::Error> {
let decimal = decstr::BigBitstring::try_parse(Pi("./examples/pi.txt"))?;
println!("{}", decimal);
println!("{:?}", decimal.as_le_bytes());
Ok(())
}
#[cfg(not(feature = "arbitrary-precision"))]
fn main() {}
use std::{
fmt,
fs,
io::{
self,
Read,
},
str,
};
pub struct Pi(&'static str);
impl fmt::Display for Pi {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let mut pi = fs::File::open(self.0).unwrap();
let mut buf = [0; 16];
loop {
match pi.read(&mut buf) {
Ok(0) => {
break;
}
Ok(n) => {
let buf = str::from_utf8(&buf[..n]).unwrap();
f.write_str(buf)?;
}
Err(e) if e.kind() == io::ErrorKind::Interrupted => continue,
Err(_) => return Err(fmt::Error),
}
}
Ok(())
}
}