@ -7,6 +7,8 @@ use getrandom::*;
mod parse ;
mod parse ;
mod r #impl ;
mod r #impl ;
const BYTES_BUFFER_SIZE : usize = 4096 ;
fn get < T : Default > ( ) -> Result < T , Error >
fn get < T : Default > ( ) -> Result < T , Error >
{
{
let mut value : T = Default ::default ( ) ;
let mut value : T = Default ::default ( ) ;
@ -154,6 +156,8 @@ fn bytes(args: &[String]) -> Result<(), Error>
usage ( ) ;
usage ( ) ;
} else {
} else {
let num = parse ::bytes ( & args [ 0 ] ) . expect ( "Failed to parse number of bytes" ) as usize ;
let num = parse ::bytes ( & args [ 0 ] ) . expect ( "Failed to parse number of bytes" ) as usize ;
if cfg! ( feature = "bytes-dynamic" ) {
let mut mem = Vec ::with_capacity ( num ) ;
let mut mem = Vec ::with_capacity ( num ) ;
debug_assert_eq! ( mem . capacity ( ) , num ) ;
debug_assert_eq! ( mem . capacity ( ) , num ) ;
@ -165,8 +169,24 @@ fn bytes(args: &[String]) -> Result<(), Error>
debug_assert_eq! ( num , mem . len ( ) ) ;
debug_assert_eq! ( num , mem . len ( ) ) ;
let stdout = std ::io ::stdout ( ) ;
let stdout = std ::io ::stdout ( ) ;
use std ::io ::Write ;
use std ::io ::Write ;
stdout . lock ( ) . write_all ( & mem [ .. ] ) . expect ( "write error" ) ;
stdout . lock ( ) . write_all ( & mem [ .. ] ) . expect ( "write error" ) ;
} else {
let mut buffer = [ 0 u8 ; BYTES_BUFFER_SIZE ] ;
let mut num = num ;
let stdout = std ::io ::stdout ( ) ;
let mut stdout = stdout . lock ( ) ;
while num > 0 {
let w = std ::cmp ::min ( num , BYTES_BUFFER_SIZE ) ;
getrandom ( & mut buffer [ .. w ] ) ? ;
use std ::io ::Write ;
stdout . write_all ( & buffer [ .. w ] ) . expect ( "write error" ) ;
num - = w ;
}
}
}
}
Ok ( ( ) )
Ok ( ( ) )
}
}