@@ -40,6 +40,26 @@ fn extract_items(item: PyResult<&PyAny>) -> PyResult<PyMappingItems<'_>> {
40
40
}
41
41
42
42
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
+ }
43
63
pub fn into_sequence_iterator (
44
64
self ,
45
65
py : Python < ' py > ,
0 commit comments