dtolnay/cxx

Duplicate const generated on cxx::bridge file in C++

開放

#830 建立於 2021年4月13日

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

倉庫指標

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

描述

Thanks for your work on this useful library! Right now I'm using cxx::bridge to provide Elixir bindings for PyTorch via Rustler (https://github.com/andfoy/extorch). I'm trying to use a rust::Slice with std::shared_ptr<CrossTensor>, where CrossTensor is a C++ opaque type as follows:

/// Index a tensor using a list of tensors.
fn index(
    tensor: &SharedPtr<CrossTensor>,
    indices: &[&SharedPtr<CrossTensor>]
) -> Result<SharedPtr<CrossTensor>>;

Where index has the following signature:

std::shared_ptr<CrossTensor> index(
    const std::shared_ptr<CrossTensor> &tensor,
    rust::Slice<const std::shared_ptr<CrossTensor>&> indices);

When I try to compile the library, it seems that the code generator is producing a bridge signature with duplicate const keywords, which causes compilation errors:

::rust::repr::PtrLen cxxbridge1$index(const ::std::shared_ptr<::CrossTensor> &tensor, ::rust::Slice<const const ::std::shared_ptr<::CrossTensor> &> indices, ::std::shared_ptr<::CrossTensor> *return$) noexcept 

I don't know if the &[&SharedPtr<CrossTensor>] declaration is malformed or if I should not use a slice in this case. I would appreciate any help with this issue.

貢獻者指南