mirror of
https://github.com/RustPython/RustPython.git
synced 2026-06-09 22:49:57 +09:00
Refactor code using Either type
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
use super::{
|
||||
PyBytes, PyBytesRef, PyInt, PyList, PyListRef, PySlice, PyStr, PyStrRef, PyTuple, PyTupleRef,
|
||||
PyTypeRef,
|
||||
PyBytes, PyBytesRef, PyInt, PyListRef, PySlice, PyStr, PyStrRef, PyTuple, PyTupleRef, PyTypeRef,
|
||||
};
|
||||
use crate::common::{
|
||||
borrow::{BorrowedValue, BorrowedValueMut},
|
||||
@@ -630,15 +629,13 @@ impl PyMemoryView {
|
||||
));
|
||||
}
|
||||
|
||||
let tup = shape.payload_if_subclass::<PyTuple>(vm);
|
||||
let list = shape.payload_if_subclass::<PyList>(vm);
|
||||
|
||||
let l = tup.map(|t| PyList::from(t.as_slice().iter().cloned().collect_vec()));
|
||||
let list_from_tuple = l.as_ref();
|
||||
|
||||
let shape = list.xor(list_from_tuple).ok_or_else(|| {
|
||||
vm.new_type_error("memoryview: must be a list or a tuple".to_owned())
|
||||
})?;
|
||||
let shape = match shape {
|
||||
Either::A(tup) => {
|
||||
let elements = tup.as_slice().iter().cloned().collect_vec();
|
||||
vm.ctx.new_list(elements)
|
||||
}
|
||||
Either::B(list) => list,
|
||||
};
|
||||
|
||||
let shape_vec = shape.borrow_vec();
|
||||
let shape_ndim = shape_vec.len();
|
||||
|
||||
Reference in New Issue
Block a user