@@ -612,18 +612,9 @@ impl PyByteInner {
612
612
613
613
pub fn join ( & self , iter : PyIterable , vm : & VirtualMachine ) -> PyResult {
614
614
let mut refs = vec ! [ ] ;
615
- for ( index , v ) in iter. iter ( vm) ?. enumerate ( ) {
615
+ for v in iter. iter ( vm) ? {
616
616
let v = v?;
617
- match try_as_bytes_like ( & v) {
618
- None => {
619
- return Err ( vm. new_type_error ( format ! (
620
- "sequence item {}: expected a bytes-like object, {} found" ,
621
- index,
622
- & v. class( ) . name,
623
- ) ) ) ;
624
- }
625
- Some ( value) => refs. extend ( value) ,
626
- }
617
+ refs. extend ( PyByteInner :: try_from_object ( vm, v) ?. elements )
627
618
}
628
619
629
620
Ok ( vm. ctx . new_bytes ( refs) )
@@ -642,15 +633,7 @@ impl PyByteInner {
642
633
Either :: B ( tuple) => {
643
634
let mut flatten = vec ! [ ] ;
644
635
for v in objsequence:: get_elements ( tuple. as_object ( ) ) . to_vec ( ) {
645
- match try_as_bytes_like ( & v) {
646
- None => {
647
- return Err ( vm. new_type_error ( format ! (
648
- "a bytes-like object is required, not {}" ,
649
- & v. class( ) . name,
650
- ) ) ) ;
651
- }
652
- Some ( value) => flatten. extend ( value) ,
653
- }
636
+ flatten. extend ( PyByteInner :: try_from_object ( vm, v) ?. elements )
654
637
}
655
638
flatten
656
639
}
@@ -784,15 +767,6 @@ pub fn try_as_byte(obj: &PyObjectRef) -> Option<Vec<u8>> {
784
767
_ => None )
785
768
}
786
769
787
- pub fn try_as_bytes_like ( obj : & PyObjectRef ) -> Option < Vec < u8 > > {
788
- match_class ! ( obj. clone( ) ,
789
-
790
- i @ PyBytes => Some ( i. get_value( ) . to_vec( ) ) ,
791
- j @ PyByteArray => Some ( get_value_bytearray( & j. as_object( ) ) . to_vec( ) ) ,
792
- k @ PyMemoryView => Some ( k. get_obj_value( ) . unwrap( ) ) ,
793
- _ => None )
794
- }
795
-
796
770
pub trait ByteOr : ToPrimitive {
797
771
fn byte_or ( & self , vm : & VirtualMachine ) -> Result < u8 , PyObjectRef > {
798
772
match self . to_u8 ( ) {
0 commit comments