@@ -124,7 +124,7 @@ pub struct Requirement<T: Pep508Url = VerbatimUrl> {
124
124
pub name : PackageName ,
125
125
/// The list of extras such as `security`, `tests` in
126
126
/// `requests [security,tests] >= 2.8.1, == 2.8.* ; python_version > "3.8"`.
127
- pub extras : Vec < ExtraName > ,
127
+ pub extras : Box < [ ExtraName ] > ,
128
128
/// The version specifier such as `>= 2.8.1`, `== 2.8.*` in
129
129
/// `requests [security,tests] >= 2.8.1, == 2.8.* ; python_version > "3.8"`.
130
130
/// or a URL.
@@ -964,7 +964,7 @@ fn parse_pep508_requirement<T: Pep508Url>(
964
964
965
965
Ok ( Requirement {
966
966
name,
967
- extras,
967
+ extras : extras . into_boxed_slice ( ) ,
968
968
version_or_url : requirement_kind,
969
969
marker : marker. unwrap_or_default ( ) ,
970
970
origin : None ,
@@ -1058,10 +1058,10 @@ mod tests {
1058
1058
assert_eq ! ( input, requests. to_string( ) ) ;
1059
1059
let expected = Requirement {
1060
1060
name : PackageName :: from_str ( "requests" ) . unwrap ( ) ,
1061
- extras : vec ! [
1061
+ extras : Box :: new ( [
1062
1062
ExtraName :: from_str ( "security" ) . unwrap ( ) ,
1063
1063
ExtraName :: from_str ( "tests" ) . unwrap ( ) ,
1064
- ] ,
1064
+ ] ) ,
1065
1065
version_or_url : Some ( VersionOrUrl :: VersionSpecifier (
1066
1066
[
1067
1067
VersionSpecifier :: from_pattern (
@@ -1126,7 +1126,7 @@ mod tests {
1126
1126
fn direct_url_no_extras ( ) {
1127
1127
let numpy = crate :: UnnamedRequirement :: < VerbatimUrl > :: from_str ( "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl" ) . unwrap ( ) ;
1128
1128
assert_eq ! ( numpy. url. to_string( ) , "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl" ) ;
1129
- assert_eq ! ( numpy. extras, vec! [ ] ) ;
1129
+ assert_eq ! ( * numpy. extras, [ ] ) ;
1130
1130
}
1131
1131
1132
1132
#[ test]
@@ -1140,7 +1140,7 @@ mod tests {
1140
1140
numpy. url. to_string( ) ,
1141
1141
"file:///path/to/numpy-1.26.4-cp312-cp312-win32.whl"
1142
1142
) ;
1143
- assert_eq ! ( numpy. extras, vec! [ ExtraName :: from_str( "dev" ) . unwrap( ) ] ) ;
1143
+ assert_eq ! ( * numpy. extras, [ ExtraName :: from_str( "dev" ) . unwrap( ) ] ) ;
1144
1144
}
1145
1145
1146
1146
#[ test]
@@ -1154,7 +1154,7 @@ mod tests {
1154
1154
numpy. url. to_string( ) ,
1155
1155
"file:///C:/path/to/numpy-1.26.4-cp312-cp312-win32.whl"
1156
1156
) ;
1157
- assert_eq ! ( numpy. extras, vec! [ ExtraName :: from_str( "dev" ) . unwrap( ) ] ) ;
1157
+ assert_eq ! ( * numpy. extras, [ ExtraName :: from_str( "dev" ) . unwrap( ) ] ) ;
1158
1158
}
1159
1159
1160
1160
#[ test]
@@ -1244,15 +1244,15 @@ mod tests {
1244
1244
#[ test]
1245
1245
fn error_extras1 ( ) {
1246
1246
let numpy = Requirement :: < Url > :: from_str ( "black[d]" ) . unwrap ( ) ;
1247
- assert_eq ! ( numpy. extras, vec! [ ExtraName :: from_str( "d" ) . unwrap( ) ] ) ;
1247
+ assert_eq ! ( * numpy. extras, [ ExtraName :: from_str( "d" ) . unwrap( ) ] ) ;
1248
1248
}
1249
1249
1250
1250
#[ test]
1251
1251
fn error_extras2 ( ) {
1252
1252
let numpy = Requirement :: < Url > :: from_str ( "black[d,jupyter]" ) . unwrap ( ) ;
1253
1253
assert_eq ! (
1254
- numpy. extras,
1255
- vec! [
1254
+ * numpy. extras,
1255
+ [
1256
1256
ExtraName :: from_str( "d" ) . unwrap( ) ,
1257
1257
ExtraName :: from_str( "jupyter" ) . unwrap( ) ,
1258
1258
]
@@ -1262,13 +1262,13 @@ mod tests {
1262
1262
#[ test]
1263
1263
fn empty_extras ( ) {
1264
1264
let black = Requirement :: < Url > :: from_str ( "black[]" ) . unwrap ( ) ;
1265
- assert_eq ! ( black. extras, vec! [ ] ) ;
1265
+ assert_eq ! ( * black. extras, [ ] ) ;
1266
1266
}
1267
1267
1268
1268
#[ test]
1269
1269
fn empty_extras_with_spaces ( ) {
1270
1270
let black = Requirement :: < Url > :: from_str ( "black[ ]" ) . unwrap ( ) ;
1271
- assert_eq ! ( black. extras, vec! [ ] ) ;
1271
+ assert_eq ! ( * black. extras, [ ] ) ;
1272
1272
}
1273
1273
1274
1274
#[ test]
@@ -1325,7 +1325,7 @@ mod tests {
1325
1325
let url = "https://github.com/pypa/pip/archive/1.3.1.zip#sha1=da9234ee9982d4bbb3c72346a6de940a148ea686" ;
1326
1326
let expected = Requirement {
1327
1327
name : PackageName :: from_str ( "pip" ) . unwrap ( ) ,
1328
- extras : vec ! [ ] ,
1328
+ extras : Box :: new ( [ ] ) ,
1329
1329
marker : MarkerTree :: TRUE ,
1330
1330
version_or_url : Some ( VersionOrUrl :: Url ( Url :: parse ( url) . unwrap ( ) ) ) ,
1331
1331
origin : None ,
0 commit comments