How come the stdlib uses unstable features like specialization?

93 points _xiphiaz 41 comments

I was poking around the BTreeSet implementation and came across the following code:

// Blanket implementation
impl<V> IsSetVal for V {
    default fn is_set_val() -> bool {
        false
    }
}

// Specialization
impl IsSetVal for SetValZST {
    fn is_set_val() -> bool {
        true
    }
}

Source: /stdlib-local-copy/1.84.1-f903f36971a4901f1becf06eb65154ff47dd6ff9/library/alloc/src/collections/btree/set_val.rs

The default fn line surprised me because I know that to be a part of the unstable specialization feature. So do I interpret correctly that the stdlib use unstable features?