>pub fn make_buffer(size: usize) -> Buffer {
>let nz_size = NonZeroUsize::new(size).expect("size must be non-zero");

事前条件がNonZeroなら
pub fn make_buffer(size: NonZeroUsize) -> Buffer
にしたほうが堅さという意味ではよくない?