dtolnay/cxx

Implement glob import semantics for builtin type names

開放

#682 建立於 2021年1月16日

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

倉庫指標

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

描述

Currently we disallow any user-defined type name that collides with one of the builtin type names.

error[cxxbridge]: reserved name
  ┌─ src/main.rs:3:12
  │
3 │     struct UniquePtr { broken: bool }
  │            ^^^^^^^^^ reserved name

error[cxxbridge]: reserved name
  ┌─ src/main.rs:5:12
  │
5 │     struct c_char { broken: bool }
  │            ^^^^^^ reserved name

However, this is bad because it makes it a breaking change for us to add new builtin bindings, such as #681. If the user already had their own type with the same name as the new binding, that code needs to continue to work.

We need to implement basically the same semantics that Rust has for prelude types and glob imports — a user-defined type replaces any builtin binding of the same name.

貢獻者指南