Skip to content

Commit 987d3a1

Browse files
authored
Merge pull request #193 from yingmanwumen/style_cargo_clippy
style: cargo clippy for rust CI
2 parents 7f2f3fd + 867b3cd commit 987d3a1

File tree

10 files changed

+51
-49
lines changed

10 files changed

+51
-49
lines changed

.github/workflows/main.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ jobs:
3333
- name: Install Python packages
3434
run: |
3535
pip install -r ./requirements/dev.txt
36+
- name: Cargo clippy
37+
run: |
38+
cd ulist
39+
cargo clippy
3640
- name: Build ulist
3741
run: |
3842
maturin build --out dist -m ulist/Cargo.toml

ulist/src/base.rs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use std::cell::Ref;
88
use std::cell::RefMut;
99
use std::collections::HashSet;
1010

11-
pub fn _fill_na<T: Clone>(vec: &mut Vec<T>, na_indexes: Ref<HashSet<usize>>, na_value: T) {
11+
pub fn _fill_na<T: Clone>(vec: &mut [T], na_indexes: Ref<HashSet<usize>>, na_value: T) {
1212
for i in na_indexes.iter() {
1313
// TODO: Use get_unchecked_mut instead.
1414
// let ptr = unsafe { vec.get_unchecked_mut(*i) };
@@ -38,7 +38,7 @@ where
3838
}
3939

4040
fn _fn_scala<U>(&self, func: impl Fn(&T) -> U) -> Vec<U> {
41-
self.values().iter().map(|x| func(x)).collect()
41+
self.values().iter().map(func).collect()
4242
}
4343

4444
fn _sort(&self) {
@@ -77,7 +77,7 @@ where
7777
return false;
7878
}
7979
}
80-
return true;
80+
true
8181
}
8282

8383
fn append(&self, elem: Option<T>) {
@@ -98,8 +98,8 @@ where
9898
self.na_indexes().len()
9999
}
100100

101-
fn cycle(vec: &Vec<T>, size: usize) -> Self {
102-
let v = vec.iter().cycle().take(size).map(|x| x.clone()).collect();
101+
fn cycle(vec: &[T], size: usize) -> Self {
102+
let v: Vec<_> = vec.iter().cycle().take(size).cloned().collect();
103103
List::_new(v, HashSet::new())
104104
}
105105

@@ -165,13 +165,11 @@ where
165165
// TODO: use get_unchecked instead.
166166
let mut vec: Vec<T> = Vec::new();
167167
let mut hset: HashSet<usize> = HashSet::new();
168-
let mut i: usize = 0;
169-
for j in indexes.values().iter() {
168+
for (i, j) in indexes.values().iter().enumerate() {
170169
vec.push(self.values()[*j].clone());
171170
if self.na_indexes().contains(j) {
172171
hset.insert(i);
173172
}
174-
i += 1;
175173
}
176174
Ok(List::_new(vec, hset))
177175
}
@@ -207,10 +205,8 @@ where
207205
} else {
208206
self.replace_by_na(_old)
209207
}
210-
} else {
211-
if let Some(_new) = new {
212-
self.replace_na(_new)
213-
}
208+
} else if let Some(_new) = new {
209+
self.replace_na(_new)
214210
}
215211
}
216212

ulist/src/boolean.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ impl BooleanList {
4545
}
4646

4747
pub fn and_(&self, other: &Self) -> PyResult<Self> {
48-
_logical_operate(&self, &other, |x, y| x && y)
48+
_logical_operate(self, other, |x, y| x && y)
4949
}
5050

5151
pub fn any(&self) -> bool {
@@ -110,7 +110,7 @@ impl BooleanList {
110110
}
111111

112112
pub fn not_(&self) -> Self {
113-
let mut vec = self.values().iter().map(|&x| !x).collect();
113+
let mut vec: Vec<_> = self.values().iter().map(|&x| !x).collect();
114114
_fill_na(&mut vec, self.na_indexes(), false);
115115
let hset = self.na_indexes().clone();
116116
BooleanList::new(vec, hset)
@@ -121,7 +121,7 @@ impl BooleanList {
121121
}
122122

123123
pub fn or_(&self, other: &Self) -> PyResult<Self> {
124-
_logical_operate(&self, &other, |x, y| x || y)
124+
_logical_operate(self, other, |x, y| x || y)
125125
}
126126

127127
pub fn pop(&self) {
@@ -159,7 +159,7 @@ impl BooleanList {
159159
.iter()
160160
.enumerate()
161161
.filter(|(_, y)| **y)
162-
.map(|(x, _)| x.clone())
162+
.map(|(x, _)| x)
163163
.collect();
164164
IndexList::new(vec)
165165
}

ulist/src/control_flow.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ use std::collections::HashSet;
1111

1212
fn select<T, U>(
1313
py: Python,
14-
conditions: &Vec<Py<BooleanList>>,
15-
choices: &Vec<T>,
14+
conditions: &[Py<BooleanList>],
15+
choices: &[T],
1616
default: T,
1717
) -> PyResult<U>
1818
where
@@ -34,11 +34,12 @@ where
3434
}
3535

3636
let mut vec = vec![default; cond[0].size()];
37-
for j in 0..cond[0].size() {
37+
// for j in 0..cond[0].size() {
38+
for (j, item) in vec.iter_mut().enumerate().take(cond[0].size()) {
3839
for i in 0..cond.len() {
3940
// TODO: Improve the benchmark.
4041
if cond[i].get(j).unwrap().unwrap() {
41-
vec[j] = choices[i].clone();
42+
*item = choices[i].clone();
4243
break;
4344
}
4445
}

ulist/src/floatings/float64.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ impl AsStringList for FloatList64 {
384384
}
385385
}
386386

387-
fn _sort(vec: &mut Vec<f64>, ascending: bool) {
387+
fn _sort(vec: &mut [f64], ascending: bool) {
388388
if ascending {
389389
vec.sort_by(|a, b| a.partial_cmp(b).unwrap());
390390
} else {

ulist/src/integers/int32.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ impl IntegerList32 {
101101
.na_indexes()
102102
.iter()
103103
.chain(other.na_indexes().iter())
104-
.map(|x| x.clone())
104+
.copied()
105105
.collect();
106106
Ok(FloatList64::new(NumericalList::div(self, other)?, hset))
107107
}

ulist/src/integers/int64.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ impl IntegerList64 {
103103
.na_indexes()
104104
.iter()
105105
.chain(other.na_indexes().iter())
106-
.map(|x| x.clone())
106+
.copied()
107107
.collect();
108108
Ok(FloatList64::new(NumericalList::div(self, other)?, hset))
109109
}

ulist/src/io.rs

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,28 @@
1-
use crate::boolean::BooleanList;
2-
use crate::floatings::FloatList64;
3-
use crate::integers::IntegerList64;
4-
use crate::string::StringList;
1+
// use crate::boolean::BooleanList;
2+
// use crate::floatings::FloatList64;
3+
// use crate::integers::IntegerList64;
4+
// use crate::string::StringList;
55
use pyo3::prelude::*;
6-
use std::collections::HashSet;
7-
use std::iter::FromIterator;
6+
// use std::collections::HashSet;
7+
// use std::iter::FromIterator;
88

99
#[pyfunction]
10-
pub fn read_csv(py: Python) -> Vec<PyObject> {
10+
pub fn read_csv(_py: Python) -> Vec<PyObject> {
1111
// This is an example implementation of `read_csv` function, which will return
1212
// PyList[BooleanList[True, False, None], IntegerList64[2, 3, None],
1313
// FloatList64[2.0, 3.0, None], StringList['foo', 'bar', None]]
14-
let blist = BooleanList::new(vec![true, false, false], HashSet::from_iter(vec![2]));
15-
let ilist = IntegerList64::new(vec![2, 3, 0], HashSet::from_iter(vec![2]));
16-
let flist = FloatList64::new(vec![2.0, 3.0, 0.0], HashSet::from_iter(vec![2]));
17-
let slist = StringList::new(
18-
vec!["foo".to_string(), "bar".to_string(), "".to_string()],
19-
HashSet::from_iter(vec![2]),
20-
);
21-
let mut result: Vec<PyObject> = Vec::new();
22-
result.push(blist.into_py(py));
23-
result.push(ilist.into_py(py));
24-
result.push(flist.into_py(py));
25-
result.push(slist.into_py(py));
26-
return result;
14+
// let blist = BooleanList::new(vec![true, false, false], HashSet::from_iter(vec![2]));
15+
// let ilist = IntegerList64::new(vec![2, 3, 0], HashSet::from_iter(vec![2]));
16+
// let flist = FloatList64::new(vec![2.0, 3.0, 0.0], HashSet::from_iter(vec![2]));
17+
// let slist = StringList::new(
18+
// vec!["foo".to_string(), "bar".to_string(), "".to_string()],
19+
// HashSet::from_iter(vec![2]),
20+
// );
21+
// let mut result: Vec<PyObject> = Vec::new();
22+
// result.push(blist.into_py(py));
23+
// result.push(ilist.into_py(py));
24+
// result.push(flist.into_py(py));
25+
// result.push(slist.into_py(py));
26+
// return result;
27+
todo!()
2728
}

ulist/src/numerical.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ where
2727
}
2828

2929
fn _fn_num<W: Clone>(&self, func: impl Fn(T) -> W, default: W) -> Vec<W> {
30-
let mut vec = self.values().iter().map(|&x| func(x)).collect();
30+
let mut vec: Vec<_> = self.values().iter().map(|&x| func(x)).collect();
3131
_fill_na(&mut vec, self.na_indexes(), default);
3232
vec
3333
}
@@ -44,7 +44,7 @@ where
4444
.na_indexes()
4545
.iter()
4646
.chain(other.na_indexes().iter())
47-
.map(|x| x.clone())
47+
.copied()
4848
.collect();
4949
let result: Self = List::_new(vec, hset);
5050
_fill_na(

ulist/src/string.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ impl StringList {
6464
}
6565

6666
pub fn contains(&self, elem: &str) -> BooleanList {
67-
let mut vec = self.values().iter().map(|x| x.contains(elem)).collect();
67+
let mut vec: Vec<_> = self.values().iter().map(|x| x.contains(elem)).collect();
6868
_fill_na(&mut vec, self.na_indexes(), false);
6969
BooleanList::new(vec, HashSet::new())
7070
}
@@ -87,7 +87,7 @@ impl StringList {
8787
}
8888

8989
pub fn ends_with(&self, elem: &str) -> BooleanList {
90-
let mut vec = self.values().iter().map(|x| x.ends_with(elem)).collect();
90+
let mut vec: Vec<_> = self.values().iter().map(|x| x.ends_with(elem)).collect();
9191
_fill_na(&mut vec, self.na_indexes(), false);
9292
BooleanList::new(vec, HashSet::new())
9393
}
@@ -138,13 +138,13 @@ impl StringList {
138138
}
139139

140140
pub fn starts_with(&self, elem: &str) -> BooleanList {
141-
let mut vec = self.values().iter().map(|x| x.starts_with(elem)).collect();
141+
let mut vec: Vec<_> = self.values().iter().map(|x| x.starts_with(elem)).collect();
142142
_fill_na(&mut vec, self.na_indexes(), false);
143143
BooleanList::new(vec, HashSet::new())
144144
}
145145

146146
pub fn str_len(&self) -> IntegerList64 {
147-
let mut vec = self.values().iter().map(|x| x.len() as i64).collect();
147+
let mut vec: Vec<_> = self.values().iter().map(|x| x.len() as i64).collect();
148148
_fill_na(&mut vec, self.na_indexes(), 0);
149149
IntegerList64::new(vec, self.na_indexes().clone())
150150
}

0 commit comments

Comments
 (0)