Rust 如何设置非';这不是函数的参数吗?
我正试图编译这段代码。函数Rust 如何设置非';这不是函数的参数吗?,rust,lifetime,Rust,Lifetime,我正试图编译这段代码。函数get_lines必须生成一个Lines的向量,将新行推到该向量上并返回该向量 fn main() { let begin_point = Point{x:100, y:100}; let end_point = Point{x:300, y:100}; let lines = get_lines( &begin_point, &end_point); } fn get_lines<'a>(begin_point:
get_lines
必须生成一个Line
s的向量,将新行推到该向量上并返回该向量
fn main() {
let begin_point = Point{x:100, y:100};
let end_point = Point{x:300, y:100};
let lines = get_lines( &begin_point, &end_point);
}
fn get_lines<'a>(begin_point: &'a Point, end_point: &'a Point) -> Vec<Line<'a>>
{
let mut lines: Vec<Line> = vec![];
let middle_color = Color{r:0,g:0,b:0};
let line = Line {
begin_point: begin_point,
end_point: end_point,
color: &middle_color,
};
lines.push(line);
lines
}
struct Color<> {r:i32, g:i32, b:i32}
struct Point {x:i32, y:i32}
struct Line<'a> {
begin_point: &'a Point,
end_point: &'a Point,
color: &'a Color
}
fn main(){
让begin_point=point{x:100,y:100};
设端点=点{x:300,y:100};
let lines=获取线(&开始点,&结束点);
}
fn获取\u行>
{
让mut行:Vec=Vec![];
设middle_color=color{r:0,g:0,b:0};
让线=线{
开始点:开始点,
终点:终点,
颜色:&中间颜色,
};
推(线);
线
}
结构颜色{r:i32,g:i32,b:i32}
结构点{x:i32,y:i32}
struct Line会出现错误,因为当get\u Line()
返回时,middle\u color
超出范围并被释放。如果不发生这种情况,向量中会有一个悬空的指针
如果您确实想在行中使用对颜色的引用,可以在main
函数中实例化它,并将对它的引用传递到获取行()
,例如:
fn get_lines<'a>(begin_point: &'a Point, end_point: &'a Point, middle_color: &'a Color) -> Vec<Line<'a>>
{
...
}
fn获取行数,这不是完整的代码。我试着让它变得简单。在原始中间颜色中
取自其他功能。在未来,它将在循环中创建。这是。在这种情况下,我不会在行中使用引用,因为您失去了很多灵活性Point
和Color
是Copy
类型,您只需派生实现即可。所以我要让行
包含实际值。你是什么意思?创建了行的副本
并将此副本的引用发送到结构中?或者将Line
struct的字段作为实值?后者-在Line的字段中使用实值。例如:struct Line{p1:Point,p2:Point,c:Color}
。你的问题可以回答,但最好知道你想做什么。
fn get_lines<'a>(begin_point: &'a Point, end_point: &'a Point, middle_color: &'a Color) -> Vec<Line<'a>>
{
...
}