Comments (2)
Unfortunately, wrapping Foo in Option<_> does not make use of the remaining niche: It could set both niches to null (basically selecting the Foo::B variant and nulling the Arc's NotNull pointer) to indicate the None variant.
That would require two-usize comparison (or arbitrarily-wide comparison if this scheme were extended to more fields) which is more expensive than single-register operation.
#119507 could be related, but it's about structs. Not sure if that qualifies as dup.
Enum variant payload and struct layout share the same code. So yes, it's quite similar. Though that issue talks about 2x NonZeroU8
, which could still be merged into a single register.
from rust.
Unfortunately, wrapping Foo in Option<_> does not make use of the remaining niche: It could set both niches to null (basically selecting the Foo::B variant and nulling the Arc's NotNull pointer) to indicate the None variant.
That would require two-usize comparison (or arbitrarily-wide comparison if this scheme were extended to more fields) which is more expensive than single-register operation.
Aha, indeed. I had noticed that two reads are needed for the Some(_)
variants, which is the same in the non-inlined case. I did not see that two reads would then also needed for the None
variant, which is of course a drawback.
from rust.
Related Issues (20)
- Tracking Issue for externally implementable items
- error: internal compiler error: ...: opaque types got hidden types registered from within subtype predicate
- `print-type-size` somtimes prints incorrect output HOT 1
- Compiling this code caused the compiler to block HOT 2
- Segmentation fault installing rust on clean Ubuntu 24.04 amd64 HOT 5
- Poor interaction between NLL-borrowck, async, and c_variadic's `...` desugaring (`VaListImpl<'_>`)
- ICE : called `Option::unwrap()` on a `None` value in compiler/rustc_hir_typeck/src/method/confirm.rs HOT 2
- `&T -> *const T` or `&mut T -> *mut T` should be considered a use of inner fields HOT 2
- Remark `TMP`, `TEMP` and `USERPROFILE` env vars can influence `env::temp_dir` on Windows HOT 1
- Add SIMD operations that use f16 and f128 HOT 5
- Warn for `cfg!(target_* = "whatever")` usage in build scripts HOT 1
- UTF_16BE encode decode result does not match HOT 2
- Error when `fn` keyword is missing could be more explicit HOT 3
- How to enable rust-lld on stable? HOT 3
- Failure to recognize `&String` as equivalent to `&str` HOT 2
- need to show help for `adding an explicit lifetime bound`.
- ICE: `this path really should be doomed`
- Tracking issue for migrating from Glacier to compiletest ICE/crash tracking HOT 3
- `check_type_length_limit` is broken HOT 2
- `rust-analyzer` shows compile error E0023 but `cargo check`/clippy/build/run do not
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 rust.