Skip to content

Tracking Issue for unstable sorting in const context #102307

Open
@onestacked

Description

@onestacked
Contributor

Feature gate: #![feature(const_sort)]

This is a tracking issue for const slice::sort_unstable and sort_internals.

Public API

// core::slice

pub const fn heapsort<T, F>(v: &mut [T], mut is_less: F)
where
    F: ~const FnMut(&T, &T) -> bool + ~const Destruct;

pub const fn sort_unstable(&mut self)
    where
        T: ~const Ord;

 pub const fn sort_unstable_by<F>(&mut self, mut compare: F)
    where
        F: ~const FnMut(&T, &T) -> Ordering + ~const Destruct;

pub const fn sort_unstable_by_key<K, F>(&mut self, mut f: F)
    where
        F: ~const FnMut(&T) -> K + ~const Destruct,
        K: ~const Ord + ~const Destruct;

pub const fn select_nth_unstable(&mut self, index: usize) -> (&mut [T], &mut T, &mut [T])
    where
        T: ~const Ord;

 pub const fn select_nth_unstable_by<F>(
        &mut self,
        index: usize,
        mut compare: F,
    ) -> (&mut [T], &mut T, &mut [T])
    where
        F: ~const FnMut(&T, &T) -> Ordering + ~const Destruct;

pub const fn select_nth_unstable_by_key<K, F>(
        &mut self,
        index: usize,
        mut f: F,
    ) -> (&mut [T], &mut T, &mut [T])
    where
        F: ~const FnMut(&T) -> K + ~const Destruct,
        K: ~const Ord + ~const Destruct;

pub const fn is_sorted(&self) -> bool
    where
        T: ~const PartialOrd;

pub const fn is_sorted_by<F>(&self, mut compare: F) -> bool
    where
        F: ~const FnMut(&T, &T) -> Option<Ordering> + ~const Destruct;

pub const fn is_sorted_by_key<F, K>(&self, mut f: F) -> bool
    where
        F: ~const FnMut(&T) -> K + ~const Destruct,
        K: ~const PartialOrd + ~const Destruct;

slice::sort[_by[_key]] would need allocations in const context to be implemented. #79597

Steps / History

Unresolved Questions

Footnotes

  1. https://std-dev-guide.rust-lang.org/feature-lifecycle/stabilization.html

Activity

added
C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFC
T-libs-apiRelevant to the library API team, which will review and decide on the PR/issue.
on Sep 26, 2022
est31

est31 commented on Sep 26, 2022

@est31
Member

Can you maybe add ... in core to this? And mention why slice::sort is not included? I guess it's not included because it's in alloc due to using merge_sort which allocates internally. Edit: Resolved, thanks!

changed the title [-]Tracking Issue for sorting in const context[/-] [+]Tracking Issue for unstable sorting in const context[/+] on Sep 26, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCT-libs-apiRelevant to the library API team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @est31@onestacked

        Issue actions

          Tracking Issue for unstable sorting in const context · Issue #102307 · rust-lang/rust