ndarray
                                
                                 ndarray copied to clipboard
                                
                                    ndarray copied to clipboard
                            
                            
                            
                        Taking advantage of New Rust Features
Ideas and tracking to take advantage of “new” features in Rust
All features to be used because of what gain they give us, not to score points. Formulate goal & gain before implementing - and write it up the pull request :slightly_smiling_face:.
- [ ] std::alloc
- [x] use/namespaced macros - #517
- [ ] std::arch and target_featureI'd prefer significant work in this area to take place in a separate crate, that we depend on. Something that gathers low level "loops" in one place. Like this, but revived and remade
- [ ] NonZero for nonzero integers
- [x] NonNull for pointers #434
- [ ] repr(transparent)
- [x] needs_drop
- [x] pub(crate) - This can be used for reorganization of a quite old crate structure
- [ ] const fn(1.31)
- [x] Inclusive ranges
- [x] Rustdoc item links
- [x] 2018 edition path rules #567
- [ ] Run cargo fmton repository and add format checking to CI (now thatrustfmtis stable).
- [x] Possible use of no_std+alloc. (1.36) #708
- [x] MaybeUninit(1.36) #685
- [ ] Annotations in docs to indicate when items are enabled by features. This requires the unstable doc_cfg feature, so we should probably enable this only on docs.rs. To do so, we can add this to the crate:
#![cfg_attr(docsrs, feature(doc_cfg))]
and then on each item enabled by a specific feature, we add this:
#[cfg_attr(docsrs, doc(cfg(feature = "thefeature")))]
(For an example, see async_compression.)
- [ ] Const generics #961
Future features (not relevant yet, because they don't exist in stable Rust)
- Variadic generics
- Generic associated types
- Custom DST
- Specialization
- Allocator trait
- Iterator::try_fold(Try is unstable) #706
- trait aliases
This is a tracking issue, please edit it.
It seems 2019 is indeed going to be the year of specialisation, const generics and GAT: https://github.com/rust-lang/rfcs/pull/2657 :rocket: :rocket:
Hey mates, this looks like something that new person like me can help. Do you see any thing that is easy to get start with?
Any thoughts on @phungleson 's question? CC @jturner314
Also the Run cargo fmt can be marked complete
Some suggestions:
- Running cargo fix --edition-idiomsand cleaning up the results.
- Updating doc links to use rustdoc item links. (See RFC 1946, although not all of the RFC is implemented.)
- Using NonZero(#647).
- Changing ArrayBase.ptrtoNonNull. This would be a pretty extensive change that would touch lots of areas of the code base, but I think the changes would be relatively straightforward.
- Seeing if it would be possible to replace the dependency on stdwithcoreandalloc.
looks like GATs are going to be part of stable next week