@@ -4,6 +4,7 @@ use rustc_session::{RustcVersion, Session};
44use rustc_span:: { Symbol , sym} ;
55use serde:: Deserialize ;
66use std:: fmt;
7+ use thin_vec:: { ThinVec , thin_vec} ;
78
89macro_rules! msrv_aliases {
910 ( $( $major: literal, $minor: literal, $patch: literal {
@@ -67,12 +68,12 @@ msrv_aliases! {
6768#[ derive( Debug , Clone ) ]
6869enum MsrvInner {
6970 One ( RustcVersion ) ,
70- Stacked ( Vec < RustcVersion > ) ,
71+ Stacked ( ThinVec < RustcVersion > ) ,
7172}
7273
7374impl Default for MsrvInner {
7475 fn default ( ) -> Self {
75- Self :: Stacked ( Vec :: new ( ) )
76+ Self :: Stacked ( ThinVec :: new ( ) )
7677 }
7778}
7879
@@ -104,7 +105,7 @@ impl<'de> Deserialize<'de> for Msrv {
104105
105106impl Msrv {
106107 pub fn empty ( ) -> Msrv {
107- Msrv ( MsrvInner :: Stacked ( Vec :: new ( ) ) )
108+ Msrv ( MsrvInner :: Stacked ( ThinVec :: new ( ) ) )
108109 }
109110
110111 pub fn read_cargo ( & mut self , sess : & Session ) {
@@ -167,7 +168,7 @@ impl Msrv {
167168 if let Some ( version) = Self :: parse_attr ( sess, attrs) {
168169 self . 0 = match std:: mem:: take ( & mut self . 0 ) {
169170 MsrvInner :: Stacked ( stack) if stack. is_empty ( ) && stack. capacity ( ) == 0 => MsrvInner :: One ( version) ,
170- MsrvInner :: One ( old) => MsrvInner :: Stacked ( vec ! [ old, version] ) ,
171+ MsrvInner :: One ( old) => MsrvInner :: Stacked ( thin_vec ! [ old, version] ) ,
171172 MsrvInner :: Stacked ( mut stack) => {
172173 stack. push ( version) ;
173174 MsrvInner :: Stacked ( stack)
@@ -179,7 +180,7 @@ impl Msrv {
179180 pub fn check_attributes_post ( & mut self , sess : & Session , attrs : & [ Attribute ] ) {
180181 if Self :: parse_attr ( sess, attrs) . is_some ( ) {
181182 self . 0 = match std:: mem:: take ( & mut self . 0 ) {
182- MsrvInner :: One ( _) => MsrvInner :: Stacked ( Vec :: new ( ) ) ,
183+ MsrvInner :: One ( _) => MsrvInner :: Stacked ( ThinVec :: new ( ) ) ,
183184 MsrvInner :: Stacked ( mut vec) => {
184185 vec. pop ( ) ;
185186 MsrvInner :: Stacked ( vec)
0 commit comments