5 个版本

0.2.1 2022年10月31日
0.2.0 2022年10月24日
0.1.2 2022年9月5日
0.1.1 2022年9月5日
0.1.0 2022年9月5日

#155 in FFI

MIT 许可证

10KB
226

Nano-COM

Nano-COM.

函数堆栈

  • 一个公共函数。
    let o: Object<IMy> = ...;
    // calling a public function
    let i: u32 = o.B();
    
    trait IMyEx {
        // a definition
        fn B(&self) -> u32;
    }
    impl IMyEx for Object<IMy> {
        // an implementation of the public function
        fn B(&self) -> u32 {
            // calling a virtual function.
            unsafe { (self.interface().B()(self) }
        }
    }
    
  • 一个虚函数。
    #[repr(C)]
    pub struct IMy {
        // a definiton of the virtual function
        pub B: unsafe extern "stdcall" fn(this: &Object<IMy>) -> u32
    }
    trait IMyVmtFn: Class<Interface = IMy>
    where
        CObject<Self>: IMyEx
    {
        // an implementation of the virtual function
        extern "stdcall" fn B(this: &Object<IMy>) -> u32 {
            // calling a function implementation
            unsafe { Self::to_cobject(this) }.B()
        }
    }
    
  • 一个函数实现。
    trait IMyEx {
        // a definition
        fn B(&self) -> u32;
    }
    impl IMyEx for CObject<X> {
        // an implementation of the function.
        fn B(&self) -> u32 {
            self.value.0
        }
    }
    

无运行时依赖