我看到很多Rust代码,其中use
语句看起来像这样:
use std::io::net::ip::{SocketAddr, Ipv4Addr};
我的理解是,这个限制了use
语句只能导入SocketAddr
和Ipv4Addr
。
从Java或C#等语言的角度来看,这种做法感觉很奇怪,因为对于这些语言,导入语句总是会导入所有公共类型。
我认为可以在Rust中使用这个语句实现类似的效果。
use std::io::net::ip::*;
我能想到的明确命名的唯一原因是避免两个不同的导入包含具有相同名称的公共API时发生冲突。但是,这可以通过别名来解决,因此我想知道更严格的“仅导入所需内容”的方法是否还有其他优势?
std::io::net::ip
。然后在您的代码中通过ip::SocketAddr
访问类型。通过保留短类型,您不会冒任何名称空间冲突的风险,即使使用全局导入。 - lukeimport com.acme.dynamite.Stick
和import com.acme.dynamite.*
两种方式导入包,只是偏好不同而已。 - user395760*
导入也不被看好(除非你从一个包中导入了10个或更多类型),最好不要使用。 - Renato