Skip to content

Commit 92e5d59

Browse files
authored
Merge pull request #26 from BastiDood/refactor/tidy-up-features
Refactor: tidy up imports and features
2 parents 79f6f5c + bfb2c68 commit 92e5d59

File tree

4 files changed

+32
-56
lines changed

4 files changed

+32
-56
lines changed

.circleci/config.yml

+2-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ version: 2
2222
jobs:
2323
stable:
2424
docker:
25-
- image: rust:1.33.0
25+
- image: rust:1.36.0
2626
environment:
2727
RUSTFLAGS: -D warnings
2828
working_directory: ~/build
@@ -34,7 +34,6 @@ jobs:
3434
- run: rustc --version > ~/rust-version
3535
- *RESTORE_DEPS
3636
- run: cargo test
37-
- run: cargo test --features std
3837
- *SAVE_DEPS
3938
nightly:
4039
docker:
@@ -49,7 +48,7 @@ jobs:
4948
- *SAVE_REGISTRY
5049
- run: rustc --version > ~/rust-version
5150
- *RESTORE_DEPS
52-
- run: cargo test --features alloc
51+
- run: cargo test
5352
- *SAVE_DEPS
5453

5554
workflows:

Cargo.toml

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,5 @@ readme = "README.md"
1010
categories = ["algorithms", "no-std"]
1111

1212
[features]
13+
default = ["alloc"]
1314
alloc = []
14-
std = []
15-
default = ["std"]

src/lib.rs

+14-33
Original file line numberDiff line numberDiff line change
@@ -67,37 +67,18 @@
6767
#![warn(missing_docs)]
6868
#![no_std]
6969

70-
use core::cmp::{self, Ordering};
71-
use core::iter;
70+
use core::{
71+
cmp::{self, Ordering},
72+
iter,
73+
};
7274

73-
#[cfg(all(feature = "alloc", not(feature = "std")))]
74-
#[cfg_attr(test, macro_use)]
75+
#[cfg(feature = "alloc")]
7576
extern crate alloc;
7677

77-
#[cfg(all(feature = "alloc", not(feature = "std")))]
78-
mod imports {
79-
pub use alloc::boxed::Box;
80-
pub use alloc::collections::btree_map::BTreeMap;
81-
pub use alloc::collections::btree_set::BTreeSet;
82-
pub use alloc::vec::Vec;
83-
}
84-
85-
#[cfg(feature = "std")]
86-
#[cfg_attr(test, macro_use)]
87-
extern crate std;
88-
89-
#[cfg(feature = "std")]
90-
mod imports {
91-
pub use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet};
92-
pub use std::hash::{BuildHasher, Hash};
93-
pub use std::prelude::v1::*;
94-
}
95-
96-
#[cfg(any(feature = "std", feature = "alloc"))]
97-
use crate::imports::*;
78+
#[cfg(feature = "alloc")]
79+
use alloc::boxed::Box;
9880

99-
#[cfg(any(feature = "std", feature = "alloc"))]
100-
#[cfg(test)]
81+
#[cfg(all(test, feature = "alloc"))]
10182
mod test;
10283

10384
enum FoldStop<T, E> {
@@ -244,7 +225,7 @@ pub trait FallibleIterator {
244225
Self: Sized,
245226
F: FnMut(Self::Item) -> Result<B, Self::Error>,
246227
{
247-
Map { it: self, f: f }
228+
Map { it: self, f }
248229
}
249230

250231
/// Calls a fallible closure on each element of an iterator.
@@ -266,7 +247,7 @@ pub trait FallibleIterator {
266247
Self: Sized,
267248
F: FnMut(&Self::Item) -> Result<bool, Self::Error>,
268249
{
269-
Filter { it: self, f: f }
250+
Filter { it: self, f }
270251
}
271252

272253
/// Returns an iterator which both filters and maps. The closure may fail;
@@ -277,7 +258,7 @@ pub trait FallibleIterator {
277258
Self: Sized,
278259
F: FnMut(Self::Item) -> Result<Option<B>, Self::Error>,
279260
{
280-
FilterMap { it: self, f: f }
261+
FilterMap { it: self, f }
281262
}
282263

283264
/// Returns an iterator which yields the current iteration count as well
@@ -959,7 +940,7 @@ pub trait FallibleIterator {
959940
F: FnMut(Self::Error) -> B,
960941
Self: Sized,
961942
{
962-
MapErr { it: self, f: f }
943+
MapErr { it: self, f }
963944
}
964945

965946
/// Returns an iterator which unwraps all of its elements.
@@ -1000,7 +981,7 @@ impl<I: DoubleEndedFallibleIterator + ?Sized> DoubleEndedFallibleIterator for &m
1000981
}
1001982
}
1002983

1003-
#[cfg(any(feature = "std", feature = "alloc"))]
984+
#[cfg(feature = "alloc")]
1004985
impl<I: FallibleIterator + ?Sized> FallibleIterator for Box<I> {
1005986
type Item = I::Item;
1006987
type Error = I::Error;
@@ -1021,7 +1002,7 @@ impl<I: FallibleIterator + ?Sized> FallibleIterator for Box<I> {
10211002
}
10221003
}
10231004

1024-
#[cfg(any(feature = "std", feature = "alloc"))]
1005+
#[cfg(feature = "alloc")]
10251006
impl<I: DoubleEndedFallibleIterator + ?Sized> DoubleEndedFallibleIterator for Box<I> {
10261007
#[inline]
10271008
fn next_back(&mut self) -> Result<Option<I::Item>, I::Error> {

src/test.rs

+15-18
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
use core::iter;
2-
use core::ops::Range;
1+
use alloc::{vec, vec::Vec};
2+
use core::{iter, ops::Range};
33

4-
use super::{convert, FallibleIterator, Vec};
4+
use super::{convert, FallibleIterator};
55

66
#[test]
77
fn all() {
@@ -241,8 +241,7 @@ fn max_by_key() {
241241
// Exercise failure both on the first item, and later.
242242
assert_eq!(it.clone().max_by_key(|&i| Err::<i32, _>(i)), Err(0));
243243
assert_eq!(
244-
it.clone()
245-
.max_by_key(|&i| if i > 0 { Err(i) } else { Ok(-i) }),
244+
it.max_by_key(|&i| if i > 0 { Err(i) } else { Ok(-i) }),
246245
Err(3)
247246
);
248247
}
@@ -266,8 +265,7 @@ fn min_by_key() {
266265
// Exercise failure both on the first item, and later.
267266
assert_eq!(it.clone().min_by_key(|&i| Err::<i32, _>(i)), Err(0));
268267
assert_eq!(
269-
it.clone()
270-
.min_by_key(|&i| if i > 0 { Err(i) } else { Ok(-i) }),
268+
it.min_by_key(|&i| if i > 0 { Err(i) } else { Ok(-i) }),
271269
Err(3)
272270
);
273271
}
@@ -304,15 +302,14 @@ fn position() {
304302
assert_eq!(it.position(|n| Ok(n == 3)).unwrap(), Some(0));
305303
assert_eq!(it.position(|n| Ok(n == 5)).unwrap(), None);
306304

307-
let it = convert(vec![1, 2, 3, 4].into_iter().map(Ok::<i32, i32>));
305+
let mut it = convert(vec![1, 2, 3, 4].into_iter().map(Ok::<i32, i32>));
308306
assert_eq!(
309307
it.clone()
310308
.position(|n| if n == 3 { Err(42) } else { Ok(n == 2) }),
311309
Ok(Some(1))
312310
);
313311
assert_eq!(
314-
it.clone()
315-
.position(|n| if n == 3 { Err(42) } else { Ok(n == 4) }),
312+
it.position(|n| if n == 3 { Err(42) } else { Ok(n == 4) }),
316313
Err(42)
317314
);
318315
}
@@ -335,7 +332,7 @@ fn skip() {
335332
let it = convert(vec![1, 2, 3, 4].into_iter().map(Ok::<i32, ()>));
336333
assert_eq!(it.clone().skip(0).collect::<Vec<_>>(), Ok(vec![1, 2, 3, 4]));
337334
assert_eq!(it.clone().skip(2).collect::<Vec<_>>(), Ok(vec![3, 4]));
338-
assert_eq!(it.clone().skip(4).collect::<Vec<_>>(), Ok(vec![]));
335+
assert_eq!(it.skip(4).collect::<Vec<_>>(), Ok(vec![]));
339336
}
340337

341338
#[test]
@@ -350,7 +347,7 @@ fn skip_while() {
350347
Ok(vec![3, 4, 1])
351348
);
352349
assert_eq!(
353-
it.clone().skip_while(|x| Ok(*x < 5)).collect::<Vec<_>>(),
350+
it.skip_while(|x| Ok(*x < 5)).collect::<Vec<_>>(),
354351
Ok(vec![])
355352
);
356353
}
@@ -384,7 +381,7 @@ fn take_while() {
384381
Ok(vec![0, 1])
385382
);
386383
assert_eq!(
387-
it.clone().take_while(|x| Ok(*x < 4)).collect::<Vec<_>>(),
384+
it.take_while(|x| Ok(*x < 4)).collect::<Vec<_>>(),
388385
Ok(vec![0, 1, 2, 3, 0])
389386
);
390387
}
@@ -411,7 +408,10 @@ fn flatten() {
411408
#[test]
412409
fn inspect() {
413410
let mut buf = vec![];
414-
let it = convert(vec![0, 1, 2, 3].into_iter().map(Ok::<i32, ()>)).inspect(|v| Ok(buf.push(*v)));
411+
let it = convert(vec![0, 1, 2, 3].into_iter().map(Ok::<i32, ()>)).inspect(|&v| {
412+
buf.push(v);
413+
Ok(())
414+
});
415415
it.count().unwrap();
416416
assert_eq!(buf, vec![0, 1, 2, 3]);
417417
}
@@ -451,10 +451,7 @@ fn unzip() {
451451
#[test]
452452
fn cycle() {
453453
let it = convert(vec![0, 1, 2, 3].into_iter().map(Ok::<i32, ()>)).cycle();
454-
assert_eq!(
455-
it.take(6).clone().collect::<Vec<_>>(),
456-
Ok(vec![0, 1, 2, 3, 0, 1])
457-
);
454+
assert_eq!(it.take(6).collect::<Vec<_>>(), Ok(vec![0, 1, 2, 3, 0, 1]));
458455
}
459456

460457
#[test]

0 commit comments

Comments
 (0)