@@ -362,6 +362,33 @@ where
362362 }
363363}
364364
365+ #[ cfg( feature = "schemars" ) ]
366+ #[ cfg_attr( docs_rs, doc( cfg( feature = "schemars" ) ) ) ]
367+ impl < A > schemars:: JsonSchema for ArrayVec < A >
368+ where
369+ A : Array ,
370+ <A as Array >:: Item : schemars:: JsonSchema ,
371+ {
372+ fn schema_name ( ) -> alloc:: borrow:: Cow < ' static , str > {
373+ alloc:: format!(
374+ "Array_up_to_size_{}_of_{}" ,
375+ A :: CAPACITY ,
376+ <A as Array >:: Item :: schema_name( )
377+ )
378+ . into ( )
379+ }
380+
381+ fn json_schema (
382+ generator : & mut schemars:: SchemaGenerator ,
383+ ) -> schemars:: Schema {
384+ schemars:: json_schema!( {
385+ "type" : "array" ,
386+ "items" : generator. subschema_for:: <<A as Array >:: Item >( ) ,
387+ "maxItems" : A :: CAPACITY
388+ } )
389+ }
390+ }
391+
365392impl < A : Array > ArrayVec < A > {
366393 /// Move all values from `other` into this vec.
367394 ///
@@ -493,7 +520,7 @@ impl<A: Array> ArrayVec<A> {
493520 /// assert_eq!(av2.as_slice(), &[2, 3][..]);
494521 ///
495522 /// av.drain(..);
496- /// assert_eq!(av.as_slice(), &[]);
523+ /// assert_eq!(av.as_slice(), &[] as &[i32] );
497524 /// ```
498525 #[ inline]
499526 pub fn drain < R > ( & mut self , range : R ) -> ArrayVecDrain < ' _ , A :: Item >
@@ -758,7 +785,7 @@ impl<A: Array> ArrayVec<A> {
758785 /// ```rust
759786 /// # use tinyvec::*;
760787 /// let mut av = array_vec!([i32; 2]);
761- /// assert_eq!(&av[..], []);
788+ /// assert_eq!(&av[..], [] as [i32; 0] );
762789 /// av.push(1);
763790 /// assert_eq!(&av[..], [1]);
764791 /// av.push(2);
@@ -777,7 +804,7 @@ impl<A: Array> ArrayVec<A> {
777804 /// ```rust
778805 /// # use tinyvec::*;
779806 /// let mut av = array_vec!([i32; 2]);
780- /// assert_eq!(av.as_slice(), []);
807+ /// assert_eq!(av.as_slice(), [] as [i32; 0] );
781808 /// assert_eq!(av.try_push(1), None);
782809 /// assert_eq!(&av[..], [1]);
783810 /// assert_eq!(av.try_push(2), None);
@@ -1090,7 +1117,7 @@ impl<A: Array> ArrayVec<A> {
10901117 /// assert_eq!(av2.as_slice(), &[2, 3][..]);
10911118 ///
10921119 /// av.splice(.., None);
1093- /// assert_eq!(av.as_slice(), &[]);
1120+ /// assert_eq!(av.as_slice(), &[] as &[i32] );
10941121 /// ```
10951122 #[ inline]
10961123 pub fn splice < R , I > (
@@ -1246,7 +1273,7 @@ impl<A> ArrayVec<A> {
12461273 /// ```rust
12471274 /// # use tinyvec::ArrayVec;
12481275 /// let mut data = ArrayVec::from_array_empty([1, 2, 3, 4]);
1249- /// assert_eq!(&data[..], &[]);
1276+ /// assert_eq!(&data[..], &[] as &[i32] );
12501277 /// data.push(42);
12511278 /// assert_eq!(&data[..], &[42]);
12521279 /// ```
0 commit comments