dtolnay/cxx

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

Open

#830 opened on Apr 13, 2021

View on GitHub
 (2 comments) (0 reactions) (0 assignees)Rust (4,472 stars) (253 forks)batch import
bughelp wanted

Description

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.

Contributor guide