diff --git a/newsfragments/3991.added.md b/newsfragments/3991.added.md new file mode 100644 index 00000000..1a59ecee --- /dev/null +++ b/newsfragments/3991.added.md @@ -0,0 +1 @@ +implemented `AsRef` and `AsRef<[u8]>` for `PyBackedStr`, `AsRef<[u8]>` for `PyBackedBytes`. diff --git a/src/pybacked.rs b/src/pybacked.rs index bd29c830..dbb08652 100644 --- a/src/pybacked.rs +++ b/src/pybacked.rs @@ -27,6 +27,18 @@ impl Deref for PyBackedStr { } } +impl AsRef for PyBackedStr { + fn as_ref(&self) -> &str { + self + } +} + +impl AsRef<[u8]> for PyBackedStr { + fn as_ref(&self) -> &[u8] { + self.as_bytes() + } +} + impl TryFrom> for PyBackedStr { type Error = PyErr; fn try_from(py_string: Bound<'_, PyString>) -> Result { @@ -82,6 +94,12 @@ impl Deref for PyBackedBytes { } } +impl AsRef<[u8]> for PyBackedBytes { + fn as_ref(&self) -> &[u8] { + self + } +} + impl From> for PyBackedBytes { fn from(py_bytes: Bound<'_, PyBytes>) -> Self { let b = py_bytes.as_bytes();