Comments (2)
Thanks for reporting it. The problem lies in:
safer_ffi/src/layout/macros.rs
Line 388 in 5172c1b
which is basically the code for the "raw" variant / aspect of the ReprC
struct (since ReprC
defines a mapping from the higher-level Rust type to a raw #[repr(C)]
version of it with no safety invariants attached to it).
And from the code there (modulo macro readability), we can see this raw variant only gets its doc comments forwarded, but not the other ones (because it shouldn't be necessary to have other macros applied to that raw variant, and as we can see here, forwarding macros to things that are not the originally written struct can cause problems).
And the oversight here is that the field attributes are still forwarded!
So not-forwarding the latter ought to fix the issue. I don't have time to make sure this fix won't cause breakage elsewhere (misinteraction between multiple macros is very common and with edge cases everywhere), so I won't merge the PR and make an official release with it yet. But you should be able to use that version using a Cargo [patch]
:
[patch.crates-io.safer-ffi]
version = "0.0.5"
git = "https://github.com/getditto/safer_ffi"
branch = "fix/derive_repr_c_and_other_macros"
from safer_ffi.
Amazing, so fast you are!
Thanks. Will try ASAP.
from safer_ffi.
Related Issues (20)
- Specifying `[[bin]]` with required features should be a required instruction HOT 1
- Quickstart `crate-type` `lib` seems documented too optional
- Trivial example requires `python-headers` feature to build HOT 2
- No `DOXYGEN` def yields incorrect enum definition HOT 1
- Missing `Clone` impl for `repr_c::Box` (and friends?)
- VS code complains non snake case
- Generated Clone implementation triggers clippy lint about being incorrect for a Copy type HOT 4
- Allow disabling dependency on `inventory v0.1` HOT 2
- Macro ambiguity on nightly: `std::cfg_match` vs `crate::utils::macros::cfg_match` HOT 1
- Conditional proc-macros HOT 2
- How does `safer_ffi` avoid aliasing rule problem? HOT 3
- Compatibility with C++ vector HOT 2
- Handle non-panic Tokio task termination
- no_libc feature?
- C# headers are `public`, when `internal` visibility most likely suffices
- No tag or release for v0.1.5 HOT 1
- Feature Request: Generate rust fn and struct declarations instead of C headers HOT 1
- Python example? HOT 1
- Feature request: serde Serialize and Deserialize support for repr_c::String and repr_c::Vec
- Inconsistent MSRV user guide HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from safer_ffi.