ps_buffer/
result.rs

1use crate::{Buffer, BufferError};
2
3#[must_use]
4#[derive(Debug, PartialEq, Eq)]
5pub enum BufferResult {
6    Ok(Buffer),
7    Err(BufferError),
8}
9
10impl Clone for BufferResult {
11    fn clone(&self) -> Self {
12        match self {
13            Self::Ok(buffer) => buffer.clone().into(),
14            Self::Err(err) => Self::Err(err.clone()),
15        }
16    }
17}
18
19impl Default for BufferResult {
20    fn default() -> Self {
21        Self::Ok(Buffer::default())
22    }
23}
24
25impl From<Result<Buffer, BufferError>> for BufferResult {
26    fn from(result: Result<Buffer, BufferError>) -> Self {
27        match result {
28            Ok(buffer) => Self::Ok(buffer),
29            Err(err) => Self::Err(err),
30        }
31    }
32}
33
34impl From<Buffer> for BufferResult {
35    fn from(buffer: Buffer) -> Self {
36        Self::Ok(buffer)
37    }
38}
39
40impl From<BufferError> for BufferResult {
41    fn from(err: BufferError) -> Self {
42        Self::Err(err)
43    }
44}
45
46impl From<BufferResult> for Result<Buffer, BufferError> {
47    fn from(result: BufferResult) -> Self {
48        match result {
49            BufferResult::Ok(buffer) => Ok(buffer),
50            BufferResult::Err(err) => Err(err),
51        }
52    }
53}
54
55impl BufferResult {
56    #[allow(clippy::missing_errors_doc)]
57    /// Converts this [`BufferResult`] into a [`std::result::Result`].
58    pub fn into_result(self) -> Result<Buffer, BufferError> {
59        self.into()
60    }
61}