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 (253 forks)batch import
bughelp wanted

Repository metrics

Stars
 (4,472 stars)
PR merge metrics
 (Avg merge 8m) (3 merged PRs in 30d)

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