可以使结构和函数具有相同的名称。这对于创建没有::new()
样板的结构可能很有用。例如:
#[derive(Debug)]
struct Point {
x: i32,
y: i32,
}
fn Point(x: i32, y: i32) -> Point {
Point { x, y }
}
fn main() {
let point = Point(1, 2);
println!("{:?}", point);
}
::new()
还是与它一起使用? 最佳答案
是的,这是不好的风格。无论是导入struct Point
还是使用相同名称的函数,这都使您感到困惑,而且还违反了通用命名约定:
warning: function `Point` should have a snake case name
--> src/main.rs:7:4
|
7 | fn Point(x: i32, y: i32) -> Point {
| ^^^^^ help: convert the identifier to snake case: `point`
|
= note: `#[warn(non_snake_case)]` on by default
不,您应该使用
::new()
或将字段设为公开,以便用户可以像这样构建它:let point = Point { x: 1, y: 2 };
不,它不会在短期内被删除,因为它只是样式/设计问题,不会以任何有意义的方式影响Rust。无论如何,人们不会喜欢您什么时候做,因为这与我们都遵循的通用准则相反,这些准则使第三方库的集成更加容易。
如果您只是想拥有一个命名元组,那么请改用命名元组struct:
#[derive(Debug)]
struct Point(i32, i32);
fn main() {
let p = Point(1, 2);
println!("{:?}", point); // Point(1, 2)
}
关于function - Rust:具有相同名称的结构和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60127141/