| 957 | } |
| 958 | |
| 959 | pub fn concat(&self, other: &PyObject, vm: &VirtualMachine) -> PyResult<Vec<u8>> { |
| 960 | let buffer = PyBuffer::try_from_borrowed_object(vm, other)?; |
| 961 | let borrowed = buffer.as_contiguous(); |
| 962 | if let Some(other) = borrowed { |
| 963 | let mut v = Vec::with_capacity(self.elements.len() + other.len()); |
| 964 | v.extend_from_slice(&self.elements); |
| 965 | v.extend_from_slice(&other); |
| 966 | Ok(v) |
| 967 | } else { |
| 968 | let mut v = self.elements.clone(); |
| 969 | buffer.append_to(&mut v); |
| 970 | Ok(v) |
| 971 | } |
| 972 | } |
| 973 | } |
| 974 | |
| 975 | pub fn try_as_bytes<F, R>(obj: PyObjectRef, f: F) -> Option<R> |