pub fn new<T>(csprng: &mut T) -> Self
    where
        T: RngCore + CryptoRng,
    {
        loop {
            let mut bytes = [0u8; 11];
            csprng.fill_bytes(&mut bytes);

            if diversify_hash(bytes).is_some() {
                break Self(bytes);
            }
        }
    }
/// Generate a new _Diversifier_ that has already been confirmed
/// as a preimage to a valid diversified base point when used to
/// derive a diversified payment address.
///
/// https://zips.z.cash/protocol/protocol.pdf#saplingkeycomponents
/// https://zips.z.cash/protocol/protocol.pdf#concretediversifyhash
Generate a new _Diversifier_ that has already been confirmed
as a preimage to a valid diversified base point when used to
derive a diversified payment address.


Generate a new _Diversifier_ that has already been confirmed as a preimage to a valid diversified base point when used to derive a diversified payment address .
pub fn new<T>(csprng: &mut T) -> Self
    where
        T: RngCore + CryptoRng,
    {
        loop {
            let mut bytes = [0u8; 11];
            csprng.fill_bytes(&mut bytes);
            if diversify_hash(bytes).is_some() {
                break Self(bytes);
            }
        }
    }
pub fn new < T > ( csprng : & mut T ) -> Self where T : RngCore + CryptoRng , { loop { let mut bytes = [ 0u8 ; 11 ] ; csprng . fill_bytes ( & mut bytes ) ; if diversify_hash ( bytes ) . is_some ( ) { break Self ( bytes ) ; } } }
Generate a new _Diversifier_ that has already been confirmed
as a preimage to a valid diversified base point when used to
derive a diversified payment address.
Generate a new _Diversifier_ that has already been confirmed as a preimage to a valid diversified base point when used to derive a diversified payment address .
csprng
&mut T