diff --git a/AGENTS.md b/AGENTS.md index d43fe5258..1226c40c8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -67,6 +67,34 @@ workspace member. `base::config::keys` re-exports the handful of keys * Do not make formatting-only changes. * Keep naming/style consistent with nearby code. +### Imports + +* One `use` per crate. Everything a file takes from the same crate goes in a + single braced block, not one statement per item: + + ```rust + // no + use base::fs; + use base::message_proto::*; + + // yes + use base::{fs, message_proto::*}; + ``` + +* The only reason to split is a `#[cfg(...)]` that does not apply to the whole + block -- an attribute binds to one item, so a differently-gated import has to + stand on its own. A `pub use` re-export likewise cannot join a plain `use`. + + ```rust + #[cfg(not(feature = "flutter"))] + use base::fs; + use base::message_proto::*; + ``` + +* When splitting an existing `use` because some of its items moved to another + crate, fold each side into that crate's existing block rather than leaving a + second statement behind. + ### Comments * Avoid comments unless they explain a non-obvious reason, constraint, or workaround. diff --git a/libs/base/src/fs.rs b/libs/base/src/fs.rs index 6c9f5c4a4..96f377200 100644 --- a/libs/base/src/fs.rs +++ b/libs/base/src/fs.rs @@ -16,11 +16,13 @@ use tokio::{ }; use crate::message_proto::*; -use hbb_common::{anyhow::anyhow, bail, get_version_number, ResultType, Stream}; // https://doc.rust-lang.org/std/os/windows/fs/trait.MetadataExt.html use hbb_common::{ + anyhow::anyhow, + bail, compress::{compress, decompress}, config::Config, + get_version_number, ResultType, Stream, }; static NEXT_JOB_ID: AtomicI32 = AtomicI32::new(1);