Skip to content

Implement Default for CapacityError #601

@sgued

Description

@sgued

It is currently not possible for downstreams to create a CapacityError due to it being #[non_exhaustive].
This can be a problem when wrapping heapless APIs.

For example, a function that extends a buffer:

fn add_data(vec: &mut VecView<u8>) -> Result<(), CapacityError> {
    vec.push(0u8)?;
    vec.extend_from_slice(&b"some slice")?;
    Ok(())
}

does not compile because the push method does not return a CapacityError and it's not possible to simply use .map_err to change the error type.

I think adding a implementation of Default would be fine, and have not much maintenance risk (if this error is improved we can always just keep a default value that does not contain any precise information). It doesn't look like the #[non_exhaustive] was motivated a plan to increase the information in this error type anyway: #533 (comment).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions