Skip to content

Commit cb9111b

Browse files
Implement AsRef<[u8]> for PyBytes (#5445)
1 parent 5e10ea1 commit cb9111b

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

newsfragments/5445.added.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Implement `AsRef<[u8]>` for `PyBytes`

src/types/bytes.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,20 @@ impl PartialEq<Borrowed<'_, '_, PyBytes>> for &'_ [u8] {
275275
}
276276
}
277277

278+
impl<'a> AsRef<[u8]> for Borrowed<'a, '_, PyBytes> {
279+
#[inline]
280+
fn as_ref(&self) -> &'a [u8] {
281+
self.as_bytes()
282+
}
283+
}
284+
285+
impl AsRef<[u8]> for Bound<'_, PyBytes> {
286+
#[inline]
287+
fn as_ref(&self) -> &[u8] {
288+
self.as_bytes()
289+
}
290+
}
291+
278292
#[cfg(test)]
279293
mod tests {
280294
use super::*;
@@ -381,4 +395,17 @@ mod tests {
381395
}
382396
})
383397
}
398+
399+
#[test]
400+
fn test_as_ref_slice() {
401+
Python::attach(|py| {
402+
let b = b"hello, world";
403+
let py_bytes = PyBytes::new(py, b);
404+
let ref_bound: &[u8] = py_bytes.as_ref();
405+
assert_eq!(ref_bound, b);
406+
let py_bytes_borrowed = py_bytes.as_borrowed();
407+
let ref_borrowed: &[u8] = py_bytes_borrowed.as_ref();
408+
assert_eq!(ref_borrowed, b);
409+
})
410+
}
384411
}

0 commit comments

Comments
 (0)