diff --git a/rustfmt.toml b/rustfmt.toml index 82fd485..0124e0d 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -2,6 +2,7 @@ use_small_heuristics = "Default" hard_tabs = false imports_layout = "HorizontalVertical" imports_granularity = "Crate" +group_imports = "StdExternalCrate" match_block_trailing_comma = true max_width = 120 newline_style = "Unix" diff --git a/src/io/compat/futures.rs b/src/io/compat/futures.rs index f772b0f..ddc3bee 100644 --- a/src/io/compat/futures.rs +++ b/src/io/compat/futures.rs @@ -1,12 +1,14 @@ -use super::Compat; -use crate::io::AsyncSocket; -use futures_io::{AsyncRead, AsyncWrite}; use std::{ io::Result as IoResult, pin::Pin, task::{Context, Poll}, }; +use futures_io::{AsyncRead, AsyncWrite}; + +use super::Compat; +use crate::io::AsyncSocket; + impl AsyncSocket for Compat where S: AsyncRead + AsyncWrite + Unpin { diff --git a/src/io/mod.rs b/src/io/mod.rs index 8672ad3..efd45f2 100644 --- a/src/io/mod.rs +++ b/src/io/mod.rs @@ -3,7 +3,6 @@ #[cfg(feature = "tokio")] mod tokio; -use futures_util::ready; use std::{ future::Future, io::{Error, ErrorKind}, @@ -12,6 +11,8 @@ use std::{ task::{Context, Poll}, }; +use futures_util::ready; + #[cfg(feature = "futures-io")] mod compat; #[cfg(feature = "futures-io")] diff --git a/src/io/tokio.rs b/src/io/tokio.rs index 4d290a4..ecfc4f2 100644 --- a/src/io/tokio.rs +++ b/src/io/tokio.rs @@ -1,14 +1,16 @@ //! AsyncSocket trait implementation for tokio's AsyncRead + AsyncWrite //! traits. -use super::AsyncSocket; -use futures_util::ready; use std::{ io::Result as IoResult, pin::Pin, task::{Context, Poll}, }; + +use futures_util::ready; use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; +use super::AsyncSocket; + impl AsyncSocket for S where S: AsyncRead + AsyncWrite { diff --git a/src/lib.rs b/src/lib.rs index 83b9ed5..c5e75d2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,8 +1,3 @@ -use either::Either; -use futures_util::{ - future, - stream::{self, Once, Stream}, -}; use std::{ borrow::Cow, io::Result as IoResult, @@ -12,7 +7,12 @@ use std::{ vec, }; +use either::Either; pub use error::Error; +use futures_util::{ + future, + stream::{self, Once, Stream}, +}; pub type Result = std::result::Result; @@ -265,10 +265,11 @@ pub mod tcp; #[cfg(test)] mod tests { - use super::*; use futures_executor::block_on; use futures_util::StreamExt; + use super::*; + fn to_proxy_addrs(t: T) -> Result> { Ok(block_on(t.to_proxy_addrs().map(Result::unwrap).collect())) } diff --git a/src/tcp/socks4.rs b/src/tcp/socks4.rs index c6a74d8..2ea1bf9 100644 --- a/src/tcp/socks4.rs +++ b/src/tcp/socks4.rs @@ -1,12 +1,3 @@ -use crate::{ - io::{AsyncSocket, AsyncSocketExt}, - Error, - IntoTargetAddr, - Result, - TargetAddr, -}; - -use futures_util::stream::{self, Fuse, Stream, StreamExt}; use std::{ borrow::Borrow, io, @@ -16,11 +7,20 @@ use std::{ task::{Context, Poll}, }; -#[cfg(feature = "tokio")] -use crate::ToProxyAddrs; +use futures_util::stream::{self, Fuse, Stream, StreamExt}; #[cfg(feature = "tokio")] use tokio::net::TcpStream; +#[cfg(feature = "tokio")] +use crate::ToProxyAddrs; +use crate::{ + io::{AsyncSocket, AsyncSocketExt}, + Error, + IntoTargetAddr, + Result, + TargetAddr, +}; + #[repr(u8)] #[derive(Clone, Copy)] enum CommandV4 { diff --git a/src/tcp/socks5.rs b/src/tcp/socks5.rs index dc30027..28efcac 100644 --- a/src/tcp/socks5.rs +++ b/src/tcp/socks5.rs @@ -1,12 +1,3 @@ -use crate::{ - io::{AsyncSocket, AsyncSocketExt}, - Authentication, - Error, - IntoTargetAddr, - Result, - TargetAddr, -}; - use std::{ borrow::Borrow, io, @@ -17,11 +8,19 @@ use std::{ }; use futures_util::stream::{self, Fuse, Stream, StreamExt}; +#[cfg(feature = "tokio")] +use tokio::net::TcpStream; #[cfg(feature = "tokio")] use crate::ToProxyAddrs; -#[cfg(feature = "tokio")] -use tokio::net::TcpStream; +use crate::{ + io::{AsyncSocket, AsyncSocketExt}, + Authentication, + Error, + IntoTargetAddr, + Result, + TargetAddr, +}; #[repr(u8)] #[derive(Clone, Copy)] diff --git a/tests/common/futures_utils.rs b/tests/common/futures_utils.rs index 06d866f..1f4a50a 100644 --- a/tests/common/futures_utils.rs +++ b/tests/common/futures_utils.rs @@ -1,13 +1,13 @@ -use super::*; -use futures_util::{io::copy, AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt}; -use once_cell::sync::OnceCell; -use smol::net::{unix::UnixStream, TcpListener}; use std::{ future::Future, io::{Read, Write}, net::{SocketAddr, TcpStream as StdTcpStream}, sync::Mutex, }; + +use futures_util::{io::copy, AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt}; +use once_cell::sync::OnceCell; +use smol::net::{unix::UnixStream, TcpListener}; use tokio_socks::{ io::Compat, tcp::{socks4::Socks4Listener, socks5::Socks5Listener}, @@ -15,6 +15,8 @@ use tokio_socks::{ Result, }; +use super::*; + pub async fn echo_server() -> Result<()> { let listener = TcpListener::bind(&SocketAddr::from(([0, 0, 0, 0], 10007))).await?; loop { diff --git a/tests/common/tokio_utils.rs b/tests/common/tokio_utils.rs index 7982dfc..aaf316b 100644 --- a/tests/common/tokio_utils.rs +++ b/tests/common/tokio_utils.rs @@ -1,10 +1,10 @@ -use super::*; -use once_cell::sync::OnceCell; use std::{ io::{Read, Write}, net::{SocketAddr, TcpStream as StdTcpStream}, sync::Mutex, }; + +use once_cell::sync::OnceCell; use tokio::{ io::{copy, split, AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt}, net::{TcpListener, UnixStream}, @@ -16,6 +16,8 @@ use tokio_socks::{ Result, }; +use super::*; + pub async fn echo_server() -> Result<()> { let listener = TcpListener::bind(&SocketAddr::from(([0, 0, 0, 0], 10007))).await?; loop {