Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade to Rust 1.83 #9511

Merged
merged 1 commit into from
Nov 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ resolver = "2"

[workspace.package]
edition = "2021"
rust-version = "1.81"
rust-version = "1.83"
homepage = "https://pypi.org/project/uv/"
documentation = "https://pypi.org/project/uv/"
repository = "https://github.com/astral-sh/uv"
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-cache/src/wheel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ pub enum WheelCache<'a> {
Git(&'a Url, &'a str),
}

impl<'a> WheelCache<'a> {
impl WheelCache<'_> {
/// The root directory for a cache bucket.
pub fn root(&self) -> PathBuf {
match self {
Expand Down
1 change: 1 addition & 0 deletions crates/uv-client/src/httpcache/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -992,6 +992,7 @@ impl ArchivedCachePolicy {
/// This dictates what the caller should do next by indicating whether the
/// cached response is stale or not.
#[derive(Debug)]
#[allow(clippy::large_enum_variant)]
pub enum BeforeRequest {
/// The cached response is still fresh, and the caller may return the
/// cached response without issuing an HTTP requests.
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-client/src/remote_metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ pub(crate) async fn wheel_metadata_from_remote_zip(
// The zip archive uses as BufReader which reads in chunks of 8192. To ensure we prefetch
// enough data we round the size up to the nearest multiple of the buffer size.
let buffer_size = 8192;
let size = ((size + buffer_size - 1) / buffer_size) * buffer_size;
let size = size.div_ceil(buffer_size) * buffer_size;

// Fetch the bytes from the zip archive that contain the requested file.
reader
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-configuration/src/name_specifiers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ impl<'de> serde::Deserialize<'de> for PackageNameSpecifier {
{
struct Visitor;

impl<'de> serde::de::Visitor<'de> for Visitor {
impl serde::de::Visitor<'_> for Visitor {
type Value = PackageNameSpecifier;

fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-distribution-types/src/buildable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ pub enum SourceUrl<'a> {
Directory(DirectorySourceUrl<'a>),
}

impl<'a> SourceUrl<'a> {
impl SourceUrl<'_> {
/// Return the [`Url`] of the source.
pub fn url(&self) -> &Url {
match self {
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-distribution-types/src/hash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ pub enum HashPolicy<'a> {
Validate(&'a [HashDigest]),
}

impl<'a> HashPolicy<'a> {
impl HashPolicy<'_> {
/// Returns `true` if the hash policy is `None`.
pub fn is_none(&self) -> bool {
matches!(self, Self::None)
Expand Down
4 changes: 2 additions & 2 deletions crates/uv-distribution-types/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ pub enum VersionOrUrlRef<'a, T: Pep508Url = VerbatimUrl> {
Url(&'a T),
}

impl<'a, T: Pep508Url> VersionOrUrlRef<'a, T> {
impl<T: Pep508Url> VersionOrUrlRef<'_, T> {
/// If it is a URL, return its value.
pub fn url(&self) -> Option<&T> {
match self {
Expand Down Expand Up @@ -138,7 +138,7 @@ pub enum InstalledVersion<'a> {
Url(&'a Url, &'a Version),
}

impl<'a> InstalledVersion<'a> {
impl InstalledVersion<'_> {
/// If it is a URL, return its value.
pub fn url(&self) -> Option<&Url> {
match self {
Expand Down
4 changes: 2 additions & 2 deletions crates/uv-distribution/src/metadata/lowering.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ impl LoweredRequirement {
if workspace.packages().contains_key(&requirement.name) {
// And it's not a recursive self-inclusion (extras that activate other extras), e.g.
// `framework[machine_learning]` depends on `framework[cuda]`.
if !project_name.is_some_and(|project_name| *project_name == requirement.name) {
if project_name.is_none_or(|project_name| *project_name != requirement.name) {
// It must be declared as a workspace source.
let Some(sources) = sources.as_ref() else {
// No sources were declared for the workspace package.
Expand Down Expand Up @@ -141,7 +141,7 @@ impl LoweredRequirement {
// Support recursive editable inclusions.
if has_sources
&& requirement.version_or_url.is_none()
&& !project_name.is_some_and(|project_name| *project_name == requirement.name)
&& project_name.is_none_or(|project_name| *project_name != requirement.name)
{
warn_user_once!(
"Missing version constraint (e.g., a lower bound) for `{}`",
Expand Down
4 changes: 2 additions & 2 deletions crates/uv-distribution/src/source/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1688,7 +1688,7 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> {
.map_err(Error::CacheWrite)?;
if let Err(err) = rename_with_retry(extracted, target).await {
// If the directory already exists, accept it.
if target.is_dir() {
if err.kind() == std::io::ErrorKind::AlreadyExists {
warn!("Directory already exists: {}", target.display());
} else {
return Err(Error::CacheWrite(err));
Expand Down Expand Up @@ -1749,7 +1749,7 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> {
.map_err(Error::CacheWrite)?;
if let Err(err) = rename_with_retry(extracted, target).await {
// If the directory already exists, accept it.
if target.is_dir() {
if err.kind() == std::io::ErrorKind::AlreadyExists {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes!

warn!("Directory already exists: {}", target.display());
} else {
return Err(Error::CacheWrite(err));
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-extract/src/hash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ where
}
}

impl<'a, R> tokio::io::AsyncRead for HashReader<'a, R>
impl<R> tokio::io::AsyncRead for HashReader<'_, R>
where
R: tokio::io::AsyncRead + Unpin,
{
Expand Down
4 changes: 2 additions & 2 deletions crates/uv-install-wheel/src/linker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ fn clone_recursive(
match attempt {
Attempt::Initial => {
if let Err(err) = reflink::reflink(&from, &to) {
if matches!(err.kind(), std::io::ErrorKind::AlreadyExists) {
if err.kind() == std::io::ErrorKind::AlreadyExists {
// If cloning/copying fails and the directory exists already, it must be merged recursively.
if entry.file_type()?.is_dir() {
for entry in fs::read_dir(from)? {
Expand Down Expand Up @@ -420,7 +420,7 @@ fn clone_recursive(
}
Attempt::Subsequent => {
if let Err(err) = reflink::reflink(&from, &to) {
if matches!(err.kind(), std::io::ErrorKind::AlreadyExists) {
if err.kind() == std::io::ErrorKind::AlreadyExists {
// If cloning/copying fails and the directory exists already, it must be merged recursively.
if entry.file_type()?.is_dir() {
for entry in fs::read_dir(from)? {
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-options-metadata/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ struct SerializeVisitor<'a> {
entries: &'a mut BTreeMap<String, OptionField>,
}

impl<'a> Visit for SerializeVisitor<'a> {
impl Visit for SerializeVisitor<'_> {
fn record_set(&mut self, name: &str, set: OptionSet) {
// Collect the entries of the set.
let mut entries = BTreeMap::new();
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-pep440/src/version.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3926,7 +3926,7 @@ mod tests {
/// assertion failure messages.
struct VersionBloatedDebug<'a>(&'a Version);

impl<'a> std::fmt::Debug for VersionBloatedDebug<'a> {
impl std::fmt::Debug for VersionBloatedDebug<'_> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("Version")
.field("epoch", &self.0.epoch())
Expand Down
4 changes: 2 additions & 2 deletions crates/uv-pep508/src/marker/tree.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1219,7 +1219,7 @@ pub struct MarkerTreeDebugGraph<'a> {
marker: &'a MarkerTree,
}

impl<'a> fmt::Debug for MarkerTreeDebugGraph<'a> {
impl fmt::Debug for MarkerTreeDebugGraph<'_> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.marker.fmt_graph(f, 0)
}
Expand All @@ -1236,7 +1236,7 @@ pub struct MarkerTreeDebugRaw<'a> {
marker: &'a MarkerTree,
}

impl<'a> fmt::Debug for MarkerTreeDebugRaw<'a> {
impl fmt::Debug for MarkerTreeDebugRaw<'_> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let node = INTERNER.shared.node(self.marker.0);
f.debug_tuple("MarkerTreeDebugRaw").field(node).finish()
Expand Down
6 changes: 3 additions & 3 deletions crates/uv-pypi-types/src/conflicts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ impl<'a> From<(&'a PackageName, &'a GroupName)> for ConflictItemRef<'a> {
}
}

impl<'a> hashbrown::Equivalent<ConflictItem> for ConflictItemRef<'a> {
impl hashbrown::Equivalent<ConflictItem> for ConflictItemRef<'_> {
fn equivalent(&self, key: &ConflictItem) -> bool {
key.as_ref() == *self
}
Expand Down Expand Up @@ -335,7 +335,7 @@ impl<'a> From<&'a GroupName> for ConflictPackageRef<'a> {
}
}

impl<'a> PartialEq<ConflictPackage> for ConflictPackageRef<'a> {
impl PartialEq<ConflictPackage> for ConflictPackageRef<'_> {
fn eq(&self, other: &ConflictPackage) -> bool {
other.as_ref() == *self
}
Expand All @@ -347,7 +347,7 @@ impl<'a> PartialEq<ConflictPackageRef<'a>> for ConflictPackage {
}
}

impl<'a> hashbrown::Equivalent<ConflictPackage> for ConflictPackageRef<'a> {
impl hashbrown::Equivalent<ConflictPackage> for ConflictPackageRef<'_> {
fn equivalent(&self, key: &ConflictPackage) -> bool {
key.as_ref() == *self
}
Expand Down
36 changes: 24 additions & 12 deletions crates/uv-pypi-types/src/metadata/metadata23.rs
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ impl Metadata23 {
writer.push_str(&format!("{}{}\n", " ".repeat(key.len() + 2), line));
}
}
fn write_opt_str(writer: &mut String, key: &str, value: &Option<impl Display>) {
fn write_opt_str(writer: &mut String, key: &str, value: Option<&impl Display>) {
if let Some(value) = value {
write_str(writer, key, value);
}
Expand All @@ -233,28 +233,40 @@ impl Metadata23 {
write_all(&mut writer, "Platform", &self.platforms);
write_all(&mut writer, "Supported-Platform", &self.supported_platforms);
write_all(&mut writer, "Summary", &self.summary);
write_opt_str(&mut writer, "Keywords", &self.keywords);
write_opt_str(&mut writer, "Home-Page", &self.home_page);
write_opt_str(&mut writer, "Download-URL", &self.download_url);
write_opt_str(&mut writer, "Author", &self.author);
write_opt_str(&mut writer, "Author-email", &self.author_email);
write_opt_str(&mut writer, "License", &self.license);
write_opt_str(&mut writer, "License-Expression", &self.license_expression);
write_opt_str(&mut writer, "Keywords", self.keywords.as_ref());
write_opt_str(&mut writer, "Home-Page", self.home_page.as_ref());
write_opt_str(&mut writer, "Download-URL", self.download_url.as_ref());
write_opt_str(&mut writer, "Author", self.author.as_ref());
write_opt_str(&mut writer, "Author-email", self.author_email.as_ref());
write_opt_str(&mut writer, "License", self.license.as_ref());
write_opt_str(
&mut writer,
"License-Expression",
self.license_expression.as_ref(),
);
write_all(&mut writer, "License-File", &self.license_files);
write_all(&mut writer, "Classifier", &self.classifiers);
write_all(&mut writer, "Requires-Dist", &self.requires_dist);
write_all(&mut writer, "Provides-Dist", &self.provides_dist);
write_all(&mut writer, "Obsoletes-Dist", &self.obsoletes_dist);
write_opt_str(&mut writer, "Maintainer", &self.maintainer);
write_opt_str(&mut writer, "Maintainer-email", &self.maintainer_email);
write_opt_str(&mut writer, "Requires-Python", &self.requires_python);
write_opt_str(&mut writer, "Maintainer", self.maintainer.as_ref());
write_opt_str(
&mut writer,
"Maintainer-email",
self.maintainer_email.as_ref(),
);
write_opt_str(
&mut writer,
"Requires-Python",
self.requires_python.as_ref(),
);
write_all(&mut writer, "Requires-External", &self.requires_external);
write_all(&mut writer, "Project-URL", &self.project_urls);
write_all(&mut writer, "Provides-Extra", &self.provides_extras);
write_opt_str(
&mut writer,
"Description-Content-Type",
&self.description_content_type,
self.description_content_type.as_ref(),
);
write_all(&mut writer, "Dynamic", &self.dynamic);

Expand Down
8 changes: 4 additions & 4 deletions crates/uv-python/src/discovery.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1165,17 +1165,17 @@ pub(crate) fn is_windows_store_shim(path: &Path) -> bool {
}

// Ex) `WindowsApps`
if !components
if components
.next()
.is_some_and(|component| component.as_os_str() == "WindowsApps")
.is_none_or(|component| component.as_os_str() != "WindowsApps")
Comment on lines -1168 to +1170
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to me that reads worse

{
return false;
}

// Ex) `Microsoft`
if !components
if components
.next()
.is_some_and(|component| component.as_os_str() == "Microsoft")
.is_none_or(|component| component.as_os_str() != "Microsoft")
{
return false;
}
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-python/src/installation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ impl PythonInstallation {
python_install_mirror: Option<&str>,
pypy_install_mirror: Option<&str>,
) -> Result<Self, Error> {
let request = request.unwrap_or_else(|| &PythonRequest::Default);
let request = request.unwrap_or(&PythonRequest::Default);

// Search for the installation
match Self::find(request, environments, preference, cache) {
Expand Down
4 changes: 2 additions & 2 deletions crates/uv-resolver/src/candidate_selector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ impl CandidateSelector {
is_excluded: bool,
index: Option<&'a IndexUrl>,
env: &ResolverEnvironment,
) -> Option<Candidate> {
) -> Option<Candidate<'a>> {
// In the branches, we "sort" the preferences by marker-matching through an iterator that
// first has the matching half and then the mismatching half.
let preferences_match = preferences
Expand Down Expand Up @@ -282,7 +282,7 @@ impl CandidateSelector {
range: &Range<Version>,
version_maps: &'a [VersionMap],
env: &ResolverEnvironment,
) -> Option<Candidate> {
) -> Option<Candidate<'a>> {
trace!(
"Selecting candidate for {package_name} with range {range} with {} remote versions",
version_maps.iter().map(VersionMap::len).sum::<usize>(),
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-resolver/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -808,7 +808,7 @@ impl<'range> From<&'range Range<Version>> for SentinelRange<'range> {
}
}

impl<'range> SentinelRange<'range> {
impl SentinelRange<'_> {
/// Returns `true` if the range appears to be, e.g., `>1.0.0, <1.0.0+[max]`.
pub fn is_sentinel(&self) -> bool {
self.0.iter().all(|(lower, upper)| {
Expand Down
4 changes: 2 additions & 2 deletions crates/uv-resolver/src/lock/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2754,7 +2754,7 @@ impl<'de> serde::de::Deserialize<'de> for RegistrySource {
{
struct Visitor;

impl<'de> serde::de::Visitor<'de> for Visitor {
impl serde::de::Visitor<'_> for Visitor {
type Value = RegistrySource;

fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
Expand Down Expand Up @@ -2975,7 +2975,7 @@ impl SourceDist {
) -> Result<Option<SourceDist>, LockError> {
// Reject distributions from registries that don't match the index URL, as can occur with
// `--find-links`.
if !index.is_some_and(|index| *index == reg_dist.index) {
if index.is_none_or(|index| *index != reg_dist.index) {
return Ok(None);
}

Expand Down
2 changes: 1 addition & 1 deletion crates/uv-resolver/src/pubgrub/dependencies.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ impl PubGrubDependency {
// Detect self-dependencies.
if dev.is_none() {
debug_assert!(
!source_name.is_some_and(|source_name| source_name == name),
source_name.is_none_or(|source_name| source_name != name),
"extras not flattened for {name}"
);
}
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-scripts/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ impl ScriptTag {
let mut lines = contents.lines();

// Ensure that the first line is exactly `# /// script`.
if !lines.next().is_some_and(|line| line == "# /// script") {
if lines.next().is_none_or(|line| line != "# /// script") {
return Ok(None);
}

Expand Down
9 changes: 1 addition & 8 deletions crates/uv-settings/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,7 @@ impl FilesystemOptions {
Ok(Some(Self(options)))
}
Err(Error::Io(err)) if err.kind() == std::io::ErrorKind::NotFound => Ok(None),
Err(_) if !dir.is_dir() => {
// Ex) `XDG_CONFIG_HOME=/dev/null`
tracing::debug!(
"User configuration directory `{}` does not exist or is not a directory",
dir.display()
);
Ok(None)
}
Err(Error::Io(err)) if err.kind() == std::io::ErrorKind::NotADirectory => Ok(None),
Err(err) => Err(err),
}
}
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-types/src/builds.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ pub enum BuildIsolation<'a> {
SharedPackage(&'a PythonEnvironment, &'a [PackageName]),
}

impl<'a> BuildIsolation<'a> {
impl BuildIsolation<'_> {
/// Returns `true` if build isolation is enforced for the given package name.
pub fn is_isolated(&self, package: Option<&PackageName>) -> bool {
match self {
Expand Down
Loading
Loading