Skip to content

Commit f51ac3f

Browse files
committed
much simpler version
1 parent 2ca2ab2 commit f51ac3f

File tree

7 files changed

+589
-810
lines changed

7 files changed

+589
-810
lines changed

benches/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ fn dict_python(bench: &mut Bencher) {
265265
.collect::<Vec<String>>()
266266
.join(", ")
267267
);
268+
dbg!(code.clone());
268269
let input = py.eval(&code, None, None).unwrap();
269270
let input = black_box(input);
270271
bench.iter(|| {

src/input/generic_iterable.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,26 @@ fn extract_items(item: PyResult<&PyAny>) -> PyResult<PyMappingItems<'_>> {
4040
}
4141

4242
impl<'a, 'py: 'a> GenericIterable<'a> {
43+
pub fn len(&self) -> Option<usize> {
44+
match &self {
45+
GenericIterable::List(iter) => Some(iter.len()),
46+
GenericIterable::Tuple(iter) => Some(iter.len()),
47+
GenericIterable::Set(iter) => Some(iter.len()),
48+
GenericIterable::FrozenSet(iter) => Some(iter.len()),
49+
GenericIterable::Dict(iter) => Some(iter.len()),
50+
GenericIterable::DictKeys(iter) => iter.len().ok(),
51+
GenericIterable::DictValues(iter) => iter.len().ok(),
52+
GenericIterable::DictItems(iter) => iter.len().ok(),
53+
GenericIterable::Mapping(iter) => iter.len().ok(),
54+
GenericIterable::String(iter) => iter.len().ok(),
55+
GenericIterable::Bytes(iter) => iter.len().ok(),
56+
GenericIterable::PyByteArray(iter) => Some(iter.len()),
57+
GenericIterable::Sequence(iter) => iter.len().ok(),
58+
GenericIterable::Iterator(iter) => iter.len().ok(),
59+
GenericIterable::JsonArray(iter) => Some(iter.len()),
60+
GenericIterable::JsonObject(iter) => Some(iter.len()),
61+
}
62+
}
4363
pub fn into_sequence_iterator(
4464
self,
4565
py: Python<'py>,

0 commit comments

Comments
 (0)