pub(crate) fn new_opaque(blob: &[u8]) -> Self {
        let mut bytes = blob.to_vec();
        bytes.push(Self::TYPE_OPAQUE);
        PrincipalId(Principal::from_slice(&bytes[..]))
    }
/// Opaque ids are usually used for system-internal ids (maybe system
/// canisters, maybe test ids). Instead of using this directly, consider
/// adding a separate constructor here for every such use case, so that
/// one can easily check here that all such ids are disjoint.
Opaque ids are usually used for system-internal ids (maybe system
canisters, maybe test ids). Instead of using this directly, consider
adding a separate constructor here for every such use case, so that
one can easily check here that all such ids are disjoint.
Opaque ids are usually used for system - internal ids ( maybe system canisters maybe test ids ) . Instead of using this directly consider adding a separate constructor here for every such use case so that one can easily check here that all such ids are disjoint .
pub(crate) fn new_opaque(blob: &[u8]) -> Self {
        let mut bytes = blob.to_vec();
        bytes.push(Self::TYPE_OPAQUE);
        PrincipalId(Principal::from_slice(&bytes[..]))
    }
pub ( crate ) fn new_opaque ( blob : & [ u8 ] ) -> Self { let mut bytes = blob . to_vec ( ) ; bytes . push ( Self :: TYPE_OPAQUE ) ; PrincipalId ( Principal :: from_slice ( & bytes [ .. ] ) ) }
Opaque ids are usually used for system-internal ids (maybe system
canisters, maybe test ids).
Opaque ids are usually used for system - internal ids ( maybe system canisters maybe test ids ) .
blob
&[u8]
blob
&[u8]