dtolnay/cxx

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

オープン

#830 opened on 2021/04/13

 (2 件のコメント) (0 件のリアクション) (0 人の担当者)Rust (253 件のフォーク)batch import
bughelp wanted

Repository metrics

Stars
 (4,472 個のスター)
PR merge metrics
 (平均マージ 8m) (30d で 3 merged PRs)

説明

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.

コントリビューターガイド