1 year ago

#271479

test-img

Jambalaya

Bindgen: How to include all functions in some files but only certain functions in other files?

I have two folders that I want to create bindings for:
Include: - I need everything in this folder
Src: - I only need 3 functions (of many) from one file (of many)

All of the required files are included in wrapper.h.

I can create bindings for the correct functions in src by using:

bindings.allowlist_function("myfunc")

However this then means that bindgen only creates bindings for those functions explicitly mentioned. Not the other files in the wrapper.

Is there a way to create the bindings as I wish?

Note: This code is auto-generated so I can't simply move the function.

Furthermore, there are a lot of custom types that are required by these functions and the allowlist_function method brings all of those over automatically. So I need a way to mix allowlist and the files the wrapper.h. I can't manually transfer the functions over as these files change semi-frequently and I am trying to prevent issues in FFI mismatch that manual copying introduces.

**With further research: ** I have found that in Bindgens source code it shows an allowlist_file which suggests it would allow me to allowlist my wrapper and the specific functions.

    if let Some(hidden_files) = matches.values_of("allowlist-file") {
    for file in hidden_files {
        builder = builder.allowlist_file(file);
    }

This is included on the documentation at: https://rust-lang.github.io/rust-bindgen/allowlisting.html

However, when you follow the links it is not in the builder docs and can't be found when running the code. I am confused as to whether this method really exists?

function

rust

ffi

rust-bindgen

0 Answers

Your Answer

Accepted video resources