Taking advantage of New Rust Features

Open
#558 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
20/100
Issue type
Refactor
Clarity
Needs clarification
Activity status
Stale
Tech stack
rust
Domain
tooling

Research direction

Start by choosing one unchecked Rust feature or modernization item in the checklist, such as cargo fmt and CI checks, docs.rs annotations, or const generics. Formulate the goal and expected gain before implementation, then document the result in the pull request; completion means the selected item is justified and addressed or split into a focused issue.

Written by the indexing model from the issue text.

Description

enhancement help wanted

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 🙂.

  • std::alloc
  • use/namespaced macros - #517
  • std::arch and target_feature
    I'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
  • NonNull for pointers #434
  • repr(transparent)
  • needs_drop
  • pub(crate) - This can be used for reorganization of a quite old crate structure
  • const fn (1.31)
  • Inclusive ranges
  • Rustdoc item links
  • 2018 edition path rules #567
  • Run cargo fmt on repository and add format checking to CI (now that rustfmt is stable).
  • Possible use of no_std + alloc. (1.36) #708
  • 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.

Dominant language
Rust
Stars
4.3k
Forks
391
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from rust-ndarray/ndarray

All issues in rust-ndarray/ndarray

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.