@@ -145,9 +145,11 @@ pub enum ScopeNameValidateError {
145145}
146146
147147/// A package name, like 'foo' or 'bar'. The name is not prefixed with an @.
148- /// The name must be at least 2 character long, and at most 32 characters long.
148+ /// The name must be at least 2 character long, and at most 58 characters long.
149149/// The name must only contain alphanumeric characters and hyphens.
150150/// The name must not start or end with a hyphen.
151+ ///
152+ /// 1 (@) + 20 (scope name) + 1 (/) + 58 (package name) = 80
151153#[ derive( Clone , PartialEq , Eq , Hash ) ]
152154pub struct PackageName ( String ) ;
153155
@@ -157,7 +159,7 @@ impl PackageName {
157159 return Err ( PackageNameValidateError :: TooShort ) ;
158160 }
159161
160- if name. len ( ) > 32 {
162+ if name. len ( ) > 58 {
161163 return Err ( PackageNameValidateError :: TooLong ) ;
162164 }
163165
@@ -270,7 +272,7 @@ pub enum PackageNameValidateError {
270272 #[ error( "package name must be at least 2 characters long" ) ]
271273 TooShort ,
272274
273- #[ error( "package name must be at most 32 characters long" ) ]
275+ #[ error( "package name must be at most 58 characters long" ) ]
274276 TooLong ,
275277
276278 #[ error( "package name must contain only lowercase ascii alphanumeric characters and hyphens" ) ]
@@ -897,9 +899,10 @@ mod tests {
897899 assert ! ( PackageName :: try_from( "f" ) . is_err( ) ) ;
898900 assert ! ( PackageName :: try_from( "Foo" ) . is_err( ) ) ;
899901 assert ! ( PackageName :: try_from( "oooF" ) . is_err( ) ) ;
900- assert ! (
901- PackageName :: try_from( "very-long-name-is-very-very-very-long" ) . is_err( )
902- ) ;
902+ assert ! ( PackageName :: try_from(
903+ "very-long-name-is-very-very-very-very-very-very-very-very-long"
904+ )
905+ . is_err( ) ) ;
903906 assert ! ( PackageName :: try_from( "foo_bar" ) . is_err( ) ) ;
904907 assert ! ( PackageName :: try_from( "-foo" ) . is_err( ) ) ;
905908 assert ! ( PackageName :: try_from( "foo-" ) . is_err( ) ) ;
0 commit comments