Comments (10)
AFAICS, there are some problems of the new
macro:
-
We have to expose private fields of
Stackbox
, but it would be unsafe behaviors to change any of it, and these operations do not require an unsafe block. -
It is not possible to use such macros in a crate with
#![deny(unsafe_code)]
.
from smallbox.
I would say (2) doesn't matter as much. As for the first one - yeah, macro will have to use a method that, as similar macros usually do, can be hidden from docs for general consumers with #[doc(hidden)]
but used by the macro itself.
from smallbox.
#[doc(hidden)]
doesn't prevent crate user from invoking undefined behaviors or even segfaults. This problem is much more severe than phf_macro
in which struct fields violation only causes control flow error. I prefer to stick with Unsize
traits for type system guarantee for now.
from smallbox.
Stable unsize
feature is no longer viable due to the CoerceUnsize
commit cda7d6b.
from smallbox.
I still think unsized on stack is possible in a safe way on stable Rust, but if you feel strongly against this idea, it's fair point and I suppose I can implement it in a separate crate.
from smallbox.
Do you have any idea of how to do that?
I don't know how to resolve #7 in stable rust.
from smallbox.
Ok, I got it. The new_unsized
method and the macro initializer. You might make a hard fork for that, it's good for the user to have more options.
from smallbox.
I've come up with an elegant solution about the macro story. I'll try it out soon.
from smallbox.
👏 👏 Stable unsized type is done!!! Thanks for your help!!
from smallbox.
@andylokandy Heh, I've been away for a week, but glad to see this got resolved!
from smallbox.
Related Issues (13)
- Design: Implement to_box() method HOT 1
- Recommended addition to the readme. Explain why you would want to fallback to heap for large data HOT 1
- Can `new_copy` be explained better? HOT 4
- Custom space size such such as [u8; 64] always uses heap, no matter the size HOT 4
- SmallBox pin HOT 1
- Use `MaybeUninit` directly in the struct in place of `ManuallyDrop` HOT 1
- Is this project still alive? HOT 4
- Tests fails under miri HOT 15
- Problem with building for STM32 HOT 1
- Missing alignment checks HOT 1
- Cannot put sized data into a StackBox / SmallBox with `unsize` feature HOT 2
- Tests fail when run with miri 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 smallbox.