Skip to content

implement arbitrary::Arbitrary for SmallVec #494

Description

@alejandro-vaz

implement arbitrary::Arbitrary for SmallVec

there's an implementation already on the v1 branch, revise it and port it to v2

use {
    crate::{Array, SmallVec},
    arbitrary::{Arbitrary, Unstructured},
};

impl<'a, A: Array> Arbitrary<'a> for SmallVec<A>
where
    <A as Array>::Item: Arbitrary<'a>,
{
    fn arbitrary(u: &mut Unstructured<'a>) -> arbitrary::Result<Self> {
        u.arbitrary_iter()?.collect()
    }

    fn arbitrary_take_rest(u: Unstructured<'a>) -> arbitrary::Result<Self> {
        u.arbitrary_take_rest_iter()?.collect()
    }

    fn size_hint(depth: usize) -> (usize, Option<usize>) {
        arbitrary::size_hint::and(<usize as Arbitrary>::size_hint(depth), (0, None))
    }
}

it should be locked behind a cfg "arbitrary", but inside the lib.rs file

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    good first issueGood for a first contributorhelp wantedNo clear candidate to implement itr-featurerelated to a new feature

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions