我创建了一个类Point,这里是对应的hpp文件。
#ifndef POINT
#define POINT
class Point
{
protected:
int x;
int y;
public:
Point(int x = 10, int y = 10);
void movePoint(int moveX, int moveY);
void printCoordinates();
};
#endif
Run Code Online (Sandbox Code Playgroud)
我注意到在 main 中,我可以声明一个对象并以这种方式初始化它:
Point myPoint(1, 1);
Run Code Online (Sandbox Code Playgroud)
如果我想创建一个包含两个点的结构,它不会让我以这种方式初始化它,相反,我必须使用大括号,这样:
struct segment
{
Point point1 = {0, 0};
Point point2 = {15, 15};
};
Run Code Online (Sandbox Code Playgroud)
这是为什么?
这是我的src文件夹结构
src/
|-- main.rs
|-- problems
| |-- mod.rs
| |-- p1.rs
| `-- p2.rs
`-- utilities.rs
Run Code Online (Sandbox Code Playgroud)
我的文件包含我在和utilities.rs中使用的 2 个函数。在 和 中都是行p1.rsp2.rsp1.rsp2.rs
#[path = "../utilities.rs"]
mod utilities;
Run Code Online (Sandbox Code Playgroud)
据我了解,允许我使用中定义的函数 中utilities.rs
定义的两个函数utilities.rs是
pub fn get_lines(num: &str) -> Vec<String> {...}
pub fn split(s: &String, separator: &str) -> Vec<String> {...}
Run Code Online (Sandbox Code Playgroud)
在p2.rs我同时使用它们,但在p1.rs我只使用get_lines. split当我运行或构建时,这会导致货物警告我“从未使用过”的功能,它是。但该函数已被使用,而且不仅在从未调用的函数中,所以我不明白为什么货物会警告我。看来我必须在包含自制模块的每个文件中使用每个模块函数,因为如果我确实调用,split则p1.rs警告就会消失。我不明白什么?
更清楚地说,问题是当我cargo run得到以下内容时
warning: function is never used: `split` …Run Code Online (Sandbox Code Playgroud)