You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi. Thanks for your crate.
I notice that staticvec is not building with latest nightly:
❯ rustc -V
rustc 1.71.0-nightly (e77366b57 2023-05-16)
❯ cargo build
Updating crates.io index
Compiling staticvec v0.11.9 (/home/esteban/dev/staticvec)
warning: the feature `const_ptr_read` has been stable since 1.71.0-nightly and no longer requires an attribute to enable
--> src/lib.rs:45:3
|
45 | const_ptr_read,
| ^^^^^^^^^^^^^^
|
= note: `#[warn(stable_features)]` on by default
error: ~const can only be applied to `#[const_trait]` traits
--> src/lib.rs:1420:26
|
1420 | where T: Copy + ~const PartialOrd {
| ^^^^^^^^^^
error: ~const can only be applied to `#[const_trait]` traits
--> src/lib.rs:1455:26
|
1455 | where T: Copy + ~const PartialOrd {
| ^^^^^^^^^^
error: const `impl` for trait `Clone` which is not marked with `#[const_trait]`
--> src/heap/heap_trait_impls.rs:25:37
|
25 | impl<T: Copy, const N: usize> const Clone for StaticHeap<T, N> {
| ^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Default` which is not marked with `#[const_trait]`
--> src/heap/heap_trait_impls.rs:47:36
|
47 | impl<T: Ord, const N: usize> const Default for StaticHeap<T, N> {
| ^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IntoIterator` which is not marked with `#[const_trait]`
--> src/heap/heap_trait_impls.rs:199:31
|
199 | impl<T, const N: usize> const IntoIterator for StaticHeap<T, N> {
| ^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IntoIterator` which is not marked with `#[const_trait]`
--> src/heap/heap_trait_impls.rs:225:35
|
225 | impl<'a, T, const N: usize> const IntoIterator for &'a StaticHeap<T, N> {
| ^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IntoIterator` which is not marked with `#[const_trait]`
--> src/heap/heap_trait_impls.rs:235:35
|
235 | impl<'a, T, const N: usize> const IntoIterator for &'a mut StaticHeap<T, N> {
| ^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `From` which is not marked with `#[const_trait]`
--> src/string/string_errors.rs:75:12
|
75 | impl const From<DecodeUtf16Error> for StringError {
| ^^^^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `From` which is not marked with `#[const_trait]`
--> src/string/string_errors.rs:82:12
|
82 | impl const From<Utf8Error> for StringError {
| ^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `From` which is not marked with `#[const_trait]`
--> src/string/string_errors.rs:89:28
|
89 | impl<const N: usize> const From<CapacityError<N>> for StringError {
| ^^^^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `AsMut` which is not marked with `#[const_trait]`
--> src/string/string_trait_impls.rs:39:28
|
39 | impl<const N: usize> const AsMut<str> for StaticString<N> {
| ^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `AsRef` which is not marked with `#[const_trait]`
--> src/string/string_trait_impls.rs:46:28
|
46 | impl<const N: usize> const AsRef<str> for StaticString<N> {
| ^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `AsRef` which is not marked with `#[const_trait]`
--> src/string/string_trait_impls.rs:53:28
|
53 | impl<const N: usize> const AsRef<[u8]> for StaticString<N> {
| ^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Borrow` which is not marked with `#[const_trait]`
--> src/string/string_trait_impls.rs:60:28
|
60 | impl<const N: usize> const Borrow<str> for StaticString<N> {
| ^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `BorrowMut` which is not marked with `#[const_trait]`
--> src/string/string_trait_impls.rs:67:28
|
67 | impl<const N: usize> const BorrowMut<str> for StaticString<N> {
| ^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Clone` which is not marked with `#[const_trait]`
--> src/string/string_trait_impls.rs:74:28
|
74 | impl<const N: usize> const Clone for StaticString<N> {
| ^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Default` which is not marked with `#[const_trait]`
--> src/string/string_trait_impls.rs:106:28
|
106 | impl<const N: usize> const Default for StaticString<N> {
| ^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Deref` which is not marked with `#[const_trait]`
--> src/string/string_trait_impls.rs:113:28
|
113 | impl<const N: usize> const Deref for StaticString<N> {
| ^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `DerefMut` which is not marked with `#[const_trait]`
--> src/string/string_trait_impls.rs:122:28
|
122 | impl<const N: usize> const DerefMut for StaticString<N> {
| ^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
--> src/string/string_trait_impls.rs:262:28
|
262 | impl<const N: usize> const Index<RangeFull> for StaticString<N> {
| ^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
--> src/string/string_trait_impls.rs:271:28
|
271 | impl<const N: usize> const IndexMut<RangeFull> for StaticString<N> {
| ^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `AsMut` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:47:31
|
47 | impl<T, const N: usize> const AsMut<[T]> for StaticVec<T, N> {
| ^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `AsRef` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:54:31
|
54 | impl<T, const N: usize> const AsRef<[T]> for StaticVec<T, N> {
| ^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Borrow` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:61:31
|
61 | impl<T, const N: usize> const Borrow<[T]> for StaticVec<T, N> {
| ^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `BorrowMut` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:68:31
|
68 | impl<T, const N: usize> const BorrowMut<[T]> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Clone` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:112:37
|
112 | impl<T: Copy, const N: usize> const Clone for StaticVec<T, N> {
| ^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Default` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:153:31
|
153 | impl<T, const N: usize> const Default for StaticVec<T, N> {
| ^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Deref` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:161:31
|
161 | impl<T, const N: usize> const Deref for StaticVec<T, N> {
| ^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `DerefMut` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:169:31
|
169 | impl<T, const N: usize> const DerefMut for StaticVec<T, N> {
| ^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `From` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:362:37
|
362 | impl<T: Copy, const N: usize> const From<&[T]> for StaticVec<T, N> {
| ^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `From` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:371:37
|
371 | impl<T: Copy, const N: usize> const From<&mut [T]> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `From` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:389:31
|
389 | impl<T, const N: usize> const From<[T; N]> for StaticVec<T, N> {
| ^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `From` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:396:55
|
396 | impl<T: Copy, const N1: usize, const N2: usize> const From<&[T; N1]> for StaticVec<T, N2> {
| ^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `From` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:405:37
|
405 | impl<T: Copy, const N: usize> const From<&[T; N]> for StaticVec<T, N> {
| ^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `From` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:414:55
|
414 | impl<T: Copy, const N1: usize, const N2: usize> const From<&mut [T; N1]> for StaticVec<T, N2> {
| ^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `From` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:423:37
|
423 | impl<T: Copy, const N: usize> const From<&mut [T; N]> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:495:31
|
495 | impl<T, const N: usize> const Index<usize> for StaticVec<T, N> {
| ^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:518:31
|
518 | impl<T, const N: usize> const IndexMut<usize> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:540:31
|
540 | impl<T, const N: usize> const Index<Range<usize>> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:554:31
|
554 | impl<T, const N: usize> const IndexMut<Range<usize>> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:572:31
|
572 | impl<T, const N: usize> const Index<RangeFrom<usize>> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:589:31
|
589 | impl<T, const N: usize> const IndexMut<RangeFrom<usize>> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:605:31
|
605 | impl<T, const N: usize> const Index<RangeFull> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:615:31
|
615 | impl<T, const N: usize> const IndexMut<RangeFull> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:624:31
|
624 | impl<T, const N: usize> const Index<RangeInclusive<usize>> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:638:31
|
638 | impl<T, const N: usize> const IndexMut<RangeInclusive<usize>> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:651:31
|
651 | impl<T, const N: usize> const Index<RangeTo<usize>> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:663:31
|
663 | impl<T, const N: usize> const IndexMut<RangeTo<usize>> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:674:31
|
674 | impl<T, const N: usize> const Index<RangeToInclusive<usize>> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:686:31
|
686 | impl<T, const N: usize> const IndexMut<RangeToInclusive<usize>> for StaticVec<T, N> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IntoIterator` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:708:39
|
708 | impl<'a, T: 'a, const N: usize> const IntoIterator for &'a StaticVec<T, N> {
| ^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IntoIterator` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:719:39
|
719 | impl<'a, T: 'a, const N: usize> const IntoIterator for &'a mut StaticVec<T, N> {
| ^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: const `impl` for trait `IntoIterator` which is not marked with `#[const_trait]`
--> src/trait_impls.rs:730:31
|
730 | impl<T, const N: usize> const IntoIterator for StaticVec<T, N> {
| ^^^^^^^^^^^^
|
= note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
= note: adding a non-const method body in the future would be a breaking change
error: ~const can only be applied to `#[const_trait]` traits
--> src/utils.rs:177:57
|
177 | pub(crate) const fn quicksort_internal<T: Copy + ~const PartialOrd>(
| ^^^^^^^^^^
warning: `staticvec` (lib) generated 1 warning
error: could not compile `staticvec` (lib) due to 54 previous errors; 1 warning emitted
The text was updated successfully, but these errors were encountered:
I actually cannot restore the intended functionality currently, due to this unexpected development: rust-lang/rust#110395
There's no point in me publishing a modified version without all this stuff as it would be kind of a big regression, so I unfortunately have to just recommend using a nightly compiler version from prior to the change I linked above, for the time being.
I will update to whatever the new syntax is and publish a new version on crates.io as soon as it is possible to do so.
Hi. Thanks for your crate.
I notice that staticvec is not building with latest nightly:
The text was updated successfully, but these errors were encountered: