Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  generic.rs   Sprache: unbekannt

 
//! Implements actual generic array abstraction for all supported types from `typenum` (1 to 255)

use typenum::*;

macro_rules! impl_generic_array {
    ($($type: ty),*) => {
        $(
            impl private::Sealed for $type {}
            impl Capacity for $type {
                type Array = [u8; Self::USIZE];
            }

            impl private::Sealed for <$type as Capacity>::Array {}
            impl ArraySlice for <$type as Capacity>::Array {
                const CAPACITY: usize = <$type as Unsigned>::USIZE;

                #[inline]
                fn as_slice(&self) -> &[u8] {
                    self
                }

                #[inline]
                unsafe fn as_mut_slice(&mut self) -> &mut [u8] {
                    self
                }

                #[inline]
                fn zeroed() -> Self {
                    [0; Self::CAPACITY]
                }
            }
        )*
    }
}

/// Private module to hide access to sealed trait
mod private {
    /// Trait impossible to be implemented outside of this crate, seals other traits
    pub trait Sealed {}
}

/// Implements needed types for all types of arrays (bigger than 32 don't have the default traits)
#[doc(hidden)]
pub trait ArraySlice: private::Sealed {
    /// Capacity represented by type
    const CAPACITY: usize;

    /// Returns slice of the entire array
    fn as_slice(&self) -> &[u8];
    /// Returns mutable slice of the entire array
    unsafe fn as_mut_slice(&mut self) -> &mut [u8];
    /// Returns array filled with zeroes
    fn zeroed() -> Self;
}

/// Converts between `typenum` types and its corresponding array
#[doc(hidden)]
pub trait Capacity: Unsigned + private::Sealed {
    /// Array with specified capacity
    type Array: ArraySlice + Copy;
}

impl_generic_array!(
    U1, U2, U3, U4, U5, U6, U7, U8, U9, U10, U11, U12, U13, U14, U15, U16, U17, U18, U19, U20, U21,
    U22, U23, U24, U25, U26, U27, U28, U29, U30, U31, U32, U33, U34, U35, U36, U37, U38, U39, U40,
    U41, U42, U43, U44, U45, U46, U47, U48, U49, U50, U51, U52, U53, U54, U55, U56, U57, U58, U59,
    U60, U61, U62, U63, U64, U65, U66, U67, U68, U69, U70, U71, U72, U73, U74, U75, U76, U77, U78,
    U79, U80, U81, U82, U83, U84, U85, U86, U87, U88, U89, U90, U91, U92, U93, U94, U95, U96, U97,
    U98, U99, U100, U101, U102, U103, U104, U105, U106, U107, U108, U109, U110, U111, U112, U113,
    U114, U115, U116, U117, U118, U119, U120, U121, U122, U123, U124, U125, U126, U127, U128, U129,
    U130, U131, U132, U133, U134, U135, U136, U137, U138, U139, U140, U141, U142, U143, U144, U145,
    U146, U147, U148, U149, U150, U151, U152, U153, U154, U155, U156, U157, U158, U159, U160, U161,
    U162, U163, U164, U165, U166, U167, U168, U169, U170, U171, U172, U173, U174, U178, U179, U180,
    U181, U182, U183, U184, U185, U186, U187, U188, U189, U190, U191, U192, U193, U194, U195, U196,
    U197, U198, U199, U200, U201, U202, U203, U204, U205, U206, U207, U208, U209, U210, U211, U212,
    U213, U214, U215, U216, U217, U218, U219, U220, U221, U222, U223, U224, U225, U226, U227, U228,
    U229, U230, U231, U232, U233, U234, U235, U236, U237, U238, U239, U240, U241, U242, U243, U244,
    U245, U246, U247, U248, U249, U250, U251, U252, U253, U254, U255
);

[ Dauer der Verarbeitung: 0.20 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge