dtolnay/cxx

Extern "Rust" types that are nonlocal

開放

#496 建立於 2020年11月22日

 (5 則留言) (0 個反應) (0 位負責人)Rust (253 個分叉)batch import
help wanted

倉庫指標

星標
 (4,472 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

The following worked prior to 1.0:

type DataSourcePrivate = Rc<DataSource>;

#[cxx::bridge(namespace = "mcrtlib::ffi")]
mod types {
    pub struct DataSource {
        pub inner: Box<DataSourcePrivate>,
    }

    extern "Rust" {
        type DataSourcePrivate;

        // ...
    }
}

However, now I just get a

error[E0117]: only traits defined in the current crate can be implemented for arbitrary types
  --> library/src/ffi.rs:85:9
   |
85 |         type DataSourcePrivate;
   |         ^^^^^-----------------
   |         |    |
   |         |    `Rc` is not defined in the current crate
   |         impl doesn't use only types from inside the current crate
   |
   = note: define and implement a trait or new type instead

Is it possible to make this work again or should I wrap my Rc in a tuple struct?

貢獻者指南