pub unsafe trait InterfaceList {
    type Header;

    // Required method
    fn query(iid: &Guid) -> Option<isize>;
}
Expand description

A list of COM interfaces implemented by a Rust type.

Provides a header type containing base class objects for each interface in the list, as well as a method for querying whether an interface is a member of the list and, if so, at what offset the corresponding base class object is located in the header.

This trait is implemented for tuples of interface types.

§Safety

If L::query(I::IID) returns Some(offset) for an Interface I, then whenever ptr: *mut L::Header points to a valid instance of L::Header, (ptr as *mut u8).offset(offset) as *mut I must point to a valid instance of I.

Required Associated Types§

source

type Header

Header type containing a base class object for each of the interfaces in the list.

Required Methods§

source

fn query(iid: &Guid) -> Option<isize>

If there is an interface in the list whose GUID equals iid, or which transitively derives from an interface whose GUID equals iid, query returns the offset of the corresponding base class object within Self::Header.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<I0: Interface> InterfaceList for (I0,)

§

type Header = Header1<I0>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface> InterfaceList for (I0, I1)

§

type Header = Header2<I0, I1>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface, I2: Interface> InterfaceList for (I0, I1, I2)

§

type Header = Header3<I0, I1, I2>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface, I2: Interface, I3: Interface> InterfaceList for (I0, I1, I2, I3)

§

type Header = Header4<I0, I1, I2, I3>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface, I2: Interface, I3: Interface, I4: Interface> InterfaceList for (I0, I1, I2, I3, I4)

§

type Header = Header5<I0, I1, I2, I3, I4>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface, I2: Interface, I3: Interface, I4: Interface, I5: Interface> InterfaceList for (I0, I1, I2, I3, I4, I5)

§

type Header = Header6<I0, I1, I2, I3, I4, I5>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface, I2: Interface, I3: Interface, I4: Interface, I5: Interface, I6: Interface> InterfaceList for (I0, I1, I2, I3, I4, I5, I6)

§

type Header = Header7<I0, I1, I2, I3, I4, I5, I6>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface, I2: Interface, I3: Interface, I4: Interface, I5: Interface, I6: Interface, I7: Interface> InterfaceList for (I0, I1, I2, I3, I4, I5, I6, I7)

§

type Header = Header8<I0, I1, I2, I3, I4, I5, I6, I7>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface, I2: Interface, I3: Interface, I4: Interface, I5: Interface, I6: Interface, I7: Interface, I8: Interface> InterfaceList for (I0, I1, I2, I3, I4, I5, I6, I7, I8)

§

type Header = Header9<I0, I1, I2, I3, I4, I5, I6, I7, I8>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface, I2: Interface, I3: Interface, I4: Interface, I5: Interface, I6: Interface, I7: Interface, I8: Interface, I9: Interface> InterfaceList for (I0, I1, I2, I3, I4, I5, I6, I7, I8, I9)

§

type Header = Header10<I0, I1, I2, I3, I4, I5, I6, I7, I8, I9>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface, I2: Interface, I3: Interface, I4: Interface, I5: Interface, I6: Interface, I7: Interface, I8: Interface, I9: Interface, I10: Interface> InterfaceList for (I0, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10)

§

type Header = Header11<I0, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface, I2: Interface, I3: Interface, I4: Interface, I5: Interface, I6: Interface, I7: Interface, I8: Interface, I9: Interface, I10: Interface, I11: Interface> InterfaceList for (I0, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11)

§

type Header = Header12<I0, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface, I2: Interface, I3: Interface, I4: Interface, I5: Interface, I6: Interface, I7: Interface, I8: Interface, I9: Interface, I10: Interface, I11: Interface, I12: Interface> InterfaceList for (I0, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12)

§

type Header = Header13<I0, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface, I2: Interface, I3: Interface, I4: Interface, I5: Interface, I6: Interface, I7: Interface, I8: Interface, I9: Interface, I10: Interface, I11: Interface, I12: Interface, I13: Interface> InterfaceList for (I0, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13)

§

type Header = Header14<I0, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13>

source§

fn query(iid: &Guid) -> Option<isize>

source§

impl<I0: Interface, I1: Interface, I2: Interface, I3: Interface, I4: Interface, I5: Interface, I6: Interface, I7: Interface, I8: Interface, I9: Interface, I10: Interface, I11: Interface, I12: Interface, I13: Interface, I14: Interface> InterfaceList for (I0, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14)

§

type Header = Header15<I0, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14>

source§

fn query(iid: &Guid) -> Option<isize>

Implementors§