Skip to content

Commit 5187d15

Browse files
Compilation fixes for the latest nightly compilers
1 parent 043ff94 commit 5187d15

File tree

4 files changed

+33
-45
lines changed

4 files changed

+33
-45
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ repository = "https://github.com/slightlyoutofphase/staticvec"
55
documentation = "https://docs.rs/staticvec/"
66
license = "MIT OR Apache-2.0"
77
readme = "README.md"
8-
version = "0.11.8"
8+
version = "0.11.9"
99
authors = ["SlightlyOutOfPhase <[email protected]>"]
1010
keywords = ["vec", "array", "no_std", "vector", "stack"]
1111
categories = ["data-structures", "no-std"]

demo/main_demo.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ static LEFT: StaticVec<MyStruct, 4> = staticvec![
7171
MyStruct::new("d")
7272
];
7373
static RIGHT: StaticVec<MyStruct, 2> = staticvec![MyStruct::new("e"), MyStruct::new("f")];
74-
static CONCATENATED: StaticVec<MyStruct, 6> = LEFT.concat(&RIGHT);
74+
//static CONCATENATED: StaticVec<MyStruct, 6> = LEFT.concat(&RIGHT);
7575
static SPLIT: (StaticVec<usize, 2>, StaticVec<usize, 4>) =
7676
staticvec![1usize, 2usize, 3usize, 4usize, 5usize, 6usize].split_at::<2>();
7777

@@ -160,7 +160,7 @@ fn main() {
160160
println!("{:?}", LOL);
161161
println!("{}", unsafe { MUTABLE.len() });
162162
println!("{}", unsafe { MUTABLE.capacity() });
163-
println!("{:?}", CONCATENATED);
163+
//println!("{:?}", CONCATENATED);
164164
println!("{:?}", SPLIT);
165165
println!("{:?}", BUILT);
166166
println!("{:?}", ALSO_BUILT);

src/iterators.rs

Lines changed: 29 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ impl<'a, T: 'a, const N: usize> DoubleEndedIterator for StaticVecIterConst<'a, T
213213
}
214214
}
215215

216-
impl<'a, T: 'a, const N: usize> const ExactSizeIterator for StaticVecIterConst<'a, T, N> {
216+
impl<'a, T: 'a, const N: usize> ExactSizeIterator for StaticVecIterConst<'a, T, N> {
217217
#[inline(always)]
218218
fn len(&self) -> usize {
219219
distance_between(self.end, self.start)
@@ -225,22 +225,22 @@ impl<'a, T: 'a, const N: usize> const ExactSizeIterator for StaticVecIterConst<'
225225
}
226226
}
227227

228-
impl<'a, T: 'a, const N: usize> const FusedIterator for StaticVecIterConst<'a, T, N> {}
229-
unsafe impl<'a, T: 'a, const N: usize> const TrustedLen for StaticVecIterConst<'a, T, N> {}
228+
impl<'a, T: 'a, const N: usize> FusedIterator for StaticVecIterConst<'a, T, N> {}
229+
unsafe impl<'a, T: 'a, const N: usize> TrustedLen for StaticVecIterConst<'a, T, N> {}
230230
// We hide this one just in case it gets removed from `std` later, so no one relies on us relying on
231231
// it.
232232
#[doc(hidden)]
233-
unsafe impl<'a, T: 'a, const N: usize> const TrustedRandomAccessNoCoerce
233+
unsafe impl<'a, T: 'a, const N: usize> TrustedRandomAccessNoCoerce
234234
for StaticVecIterConst<'a, T, N>
235235
{
236236
const MAY_HAVE_SIDE_EFFECT: bool = false;
237237
fn size(&self) -> usize {
238238
distance_between(self.end, self.start)
239239
}
240240
}
241-
unsafe impl<'a, T: 'a + Sync, const N: usize> const Sync for StaticVecIterConst<'a, T, N> {}
241+
unsafe impl<'a, T: 'a + Sync, const N: usize> Sync for StaticVecIterConst<'a, T, N> {}
242242
// `StaticVecIterConst` works in terms of `&T`, which is sendable if / when `T` is `Sync`.
243-
unsafe impl<'a, T: 'a + Sync, const N: usize> const Send for StaticVecIterConst<'a, T, N> {}
243+
unsafe impl<'a, T: 'a + Sync, const N: usize> Send for StaticVecIterConst<'a, T, N> {}
244244

245245
impl<'a, T: 'a, const N: usize> Clone for StaticVecIterConst<'a, T, N> {
246246
#[inline(always)]
@@ -408,7 +408,7 @@ impl<'a, T: 'a, const N: usize> DoubleEndedIterator for StaticVecIterMut<'a, T,
408408
}
409409
}
410410

411-
impl<'a, T: 'a, const N: usize> const ExactSizeIterator for StaticVecIterMut<'a, T, N> {
411+
impl<'a, T: 'a, const N: usize> ExactSizeIterator for StaticVecIterMut<'a, T, N> {
412412
#[inline(always)]
413413
fn len(&self) -> usize {
414414
distance_between(self.end, self.start)
@@ -420,21 +420,19 @@ impl<'a, T: 'a, const N: usize> const ExactSizeIterator for StaticVecIterMut<'a,
420420
}
421421
}
422422

423-
impl<'a, T: 'a, const N: usize> const FusedIterator for StaticVecIterMut<'a, T, N> {}
424-
unsafe impl<'a, T: 'a, const N: usize> const TrustedLen for StaticVecIterMut<'a, T, N> {}
423+
impl<'a, T: 'a, const N: usize> FusedIterator for StaticVecIterMut<'a, T, N> {}
424+
unsafe impl<'a, T: 'a, const N: usize> TrustedLen for StaticVecIterMut<'a, T, N> {}
425425
// We hide this one just in case it gets removed from `std` later, so no one relies on us relying on
426426
// it.
427427
#[doc(hidden)]
428-
unsafe impl<'a, T: 'a, const N: usize> const TrustedRandomAccessNoCoerce
429-
for StaticVecIterMut<'a, T, N>
430-
{
428+
unsafe impl<'a, T: 'a, const N: usize> TrustedRandomAccessNoCoerce for StaticVecIterMut<'a, T, N> {
431429
const MAY_HAVE_SIDE_EFFECT: bool = false;
432430
fn size(&self) -> usize {
433431
distance_between(self.end, self.start)
434432
}
435433
}
436-
unsafe impl<'a, T: 'a + Sync, const N: usize> const Sync for StaticVecIterMut<'a, T, N> {}
437-
unsafe impl<'a, T: 'a + Send, const N: usize> const Send for StaticVecIterMut<'a, T, N> {}
434+
unsafe impl<'a, T: 'a + Sync, const N: usize> Sync for StaticVecIterMut<'a, T, N> {}
435+
unsafe impl<'a, T: 'a + Send, const N: usize> Send for StaticVecIterMut<'a, T, N> {}
438436

439437
impl<'a, T: 'a + Debug, const N: usize> Debug for StaticVecIterMut<'a, T, N> {
440438
#[inline(always)]
@@ -614,7 +612,7 @@ impl<T, const N: usize> DoubleEndedIterator for StaticVecIntoIter<T, N> {
614612
}
615613
}
616614

617-
impl<T, const N: usize> const ExactSizeIterator for StaticVecIntoIter<T, N> {
615+
impl<T, const N: usize> ExactSizeIterator for StaticVecIntoIter<T, N> {
618616
#[inline(always)]
619617
fn len(&self) -> usize {
620618
self.end - self.start
@@ -626,20 +624,20 @@ impl<T, const N: usize> const ExactSizeIterator for StaticVecIntoIter<T, N> {
626624
}
627625
}
628626

629-
impl<T, const N: usize> const FusedIterator for StaticVecIntoIter<T, N> {}
630-
unsafe impl<T, const N: usize> const TrustedLen for StaticVecIntoIter<T, N> {}
627+
impl<T, const N: usize> FusedIterator for StaticVecIntoIter<T, N> {}
628+
unsafe impl<T, const N: usize> TrustedLen for StaticVecIntoIter<T, N> {}
631629
// We hide this one just in case it gets removed from `std` later, so no one relies on us relying on
632630
// it.
633631
#[doc(hidden)]
634-
unsafe impl<T: Copy, const N: usize> const TrustedRandomAccessNoCoerce for StaticVecIntoIter<T, N> {
632+
unsafe impl<T: Copy, const N: usize> TrustedRandomAccessNoCoerce for StaticVecIntoIter<T, N> {
635633
const MAY_HAVE_SIDE_EFFECT: bool = false;
636634

637635
fn size(&self) -> usize {
638636
self.end - self.start
639637
}
640638
}
641-
unsafe impl<T: Sync, const N: usize> const Sync for StaticVecIntoIter<T, N> {}
642-
unsafe impl<T: Send, const N: usize> const Send for StaticVecIntoIter<T, N> {}
639+
unsafe impl<T: Sync, const N: usize> Sync for StaticVecIntoIter<T, N> {}
640+
unsafe impl<T: Send, const N: usize> Send for StaticVecIntoIter<T, N> {}
643641

644642
impl<T: Clone, const N: usize> Clone for StaticVecIntoIter<T, N> {
645643
#[inline(always)]
@@ -758,7 +756,7 @@ impl<'a, T: 'a, const N: usize> DoubleEndedIterator for StaticVecDrain<'a, T, N>
758756
}
759757
}
760758

761-
impl<'a, T: 'a, const N: usize> const ExactSizeIterator for StaticVecDrain<'a, T, N> {
759+
impl<'a, T: 'a, const N: usize> ExactSizeIterator for StaticVecDrain<'a, T, N> {
762760
#[inline(always)]
763761
fn len(&self) -> usize {
764762
self.iter.len()
@@ -770,21 +768,21 @@ impl<'a, T: 'a, const N: usize> const ExactSizeIterator for StaticVecDrain<'a, T
770768
}
771769
}
772770

773-
impl<'a, T: 'a, const N: usize> const FusedIterator for StaticVecDrain<'a, T, N> {}
774-
unsafe impl<'a, T: 'a, const N: usize> const TrustedLen for StaticVecDrain<'a, T, N> {}
771+
impl<'a, T: 'a, const N: usize> FusedIterator for StaticVecDrain<'a, T, N> {}
772+
unsafe impl<'a, T: 'a, const N: usize> TrustedLen for StaticVecDrain<'a, T, N> {}
775773
// We hide this one just in case it gets removed from `std` later, so no one relies on us relying on
776774
// it.
777775
#[doc(hidden)]
778-
unsafe impl<'a, T: Copy + 'a, const N: usize> const TrustedRandomAccessNoCoerce
776+
unsafe impl<'a, T: Copy + 'a, const N: usize> TrustedRandomAccessNoCoerce
779777
for StaticVecDrain<'a, T, N>
780778
{
781779
const MAY_HAVE_SIDE_EFFECT: bool = false;
782780
fn size(&self) -> usize {
783781
distance_between(self.iter.end, self.iter.start)
784782
}
785783
}
786-
unsafe impl<'a, T: 'a + Sync, const N: usize> const Sync for StaticVecDrain<'a, T, N> {}
787-
unsafe impl<'a, T: 'a + Send, const N: usize> const Send for StaticVecDrain<'a, T, N> {}
784+
unsafe impl<'a, T: 'a + Sync, const N: usize> Sync for StaticVecDrain<'a, T, N> {}
785+
unsafe impl<'a, T: 'a + Send, const N: usize> Send for StaticVecDrain<'a, T, N> {}
788786

789787
impl<'a, T: 'a + Debug, const N: usize> Debug for StaticVecDrain<'a, T, N> {
790788
#[inline(always)]
@@ -879,9 +877,7 @@ impl<T, I: Iterator<Item = T> + DoubleEndedIterator, const N: usize> DoubleEnded
879877
}
880878
}
881879

882-
impl<T, I: Iterator<Item = T>, const N: usize> const ExactSizeIterator
883-
for StaticVecSplice<T, I, N>
884-
{
880+
impl<T, I: Iterator<Item = T>, const N: usize> ExactSizeIterator for StaticVecSplice<T, I, N> {
885881
#[inline(always)]
886882
fn len(&self) -> usize {
887883
self.end - self.start
@@ -893,19 +889,10 @@ impl<T, I: Iterator<Item = T>, const N: usize> const ExactSizeIterator
893889
}
894890
}
895891

896-
impl<T, I: Iterator<Item = T>, const N: usize> const FusedIterator for StaticVecSplice<T, I, N> {}
897-
unsafe impl<T, I: Iterator<Item = T>, const N: usize> const TrustedLen
898-
for StaticVecSplice<T, I, N>
899-
{
900-
}
901-
unsafe impl<T: Sync, I: Iterator<Item = T>, const N: usize> const Sync
902-
for StaticVecSplice<T, I, N>
903-
{
904-
}
905-
unsafe impl<T: Send, I: Iterator<Item = T>, const N: usize> const Send
906-
for StaticVecSplice<T, I, N>
907-
{
908-
}
892+
impl<T, I: Iterator<Item = T>, const N: usize> FusedIterator for StaticVecSplice<T, I, N> {}
893+
unsafe impl<T, I: Iterator<Item = T>, const N: usize> TrustedLen for StaticVecSplice<T, I, N> {}
894+
unsafe impl<T: Sync, I: Iterator<Item = T>, const N: usize> Sync for StaticVecSplice<T, I, N> {}
895+
unsafe impl<T: Send, I: Iterator<Item = T>, const N: usize> Send for StaticVecSplice<T, I, N> {}
909896

910897
impl<T: Debug, I: Iterator<Item = T>, const N: usize> Debug for StaticVecSplice<T, I, N> {
911898
#[inline(always)]

src/trait_impls.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ impl<T: Eq, const N: usize> Eq for StaticVec<T, N> {}
185185

186186
/// A helper trait for specialization-based implementations of [`Extend`](core::iter::Extend) and
187187
/// ['FromIterator`](core::iter::FromIterator).
188+
#[const_trait]
188189
pub(crate) trait ExtendEx<T, I> {
189190
fn extend_ex(&mut self, iter: I);
190191
fn from_iter_ex(iter: I) -> Self;

0 commit comments

Comments
 (0)