可能是一个措辞不佳的问题,但这里有一个例子:
给定这些结构;
pub struct Poll {
_lat: f64,
_lon: f64,
_at: i64,
_heading: f64,
_speed: f64,
}
pub struct Waypoint {
_lat: f64,
_lon: f64,
}
Run Code Online (Sandbox Code Playgroud)
以及这个特质;
pub trait CoordMeasure {
fn dist_to(&self, other: &Self ) -> f64;
}
Run Code Online (Sandbox Code Playgroud)
如何避免像我所做的那样复制此代码?
impl CoordMeasure for Poll {
fn dist_to(&self, other: &Poll) -> f64 {
super::core::distance(self, other)
}
}
impl CoordMeasure for Waypoint {
fn dist_to(&self, other: &Waypoint) -> f64 {
super::core::distance(self, other)
}
}
Run Code Online (Sandbox Code Playgroud)
我有两次调用相同的函数距离。
pub fn distance<T: Coord>(a: &T, b: &T …Run Code Online (Sandbox Code Playgroud) 在以下情况下是否有变量命名约定?我发现自己必须有两个名字,一个是可选的,一个是未包装的。
let user = match optional_user {
Some(u) => {
u
}
None => {
new("guest", "guest").unwrap()
}
};
Run Code Online (Sandbox Code Playgroud) 我正在关注夜间文档中的制作一个简单的 TCP 服务器示例。我已经通过 telnet 连接,我希望看到逐行发送的数据。现在我read_to_string只有在关闭 telnet 连接时才能获取数据。我希望能够在 telnet 会话中的用户点击输入后读取服务器上的每一行。
我不断收到“未实施调整大小”。如何让 wp 进入函数 foo?我认为拳击会给它一个大小,但无论有没有它,我都会得到同样的错误。
fn main() {
let wp : Option<Waypoint>= new(45.1968, -75.1968);
foo(box wp);
}
fn foo(wp: Box<Option<Coord>>) {
println!("lat: {}, lon:{}", wp.lat(), wp.lon());
}
Run Code Online (Sandbox Code Playgroud)
如何将我自己的一个结构的实例声明为静态?此示例无法编译:
static SERVER: Server<'static> = Server::new();
fn main() {
SERVER.start("127.0.0.1", 23);
}
Run Code Online (Sandbox Code Playgroud) 例如
如果我想要stdin()我需要:
use std::io;
Run Code Online (Sandbox Code Playgroud)
如果我想x.cos(),其中x是,例如,f64:
use std::num::FloatMath
Run Code Online (Sandbox Code Playgroud)
不需要.
我磕磕绊绊地发现了这一点.是否有更正式的信息来源?
我可以在struct Route中设置Waypoint的生命周期.在结构AMoreDifferentRoute中,我使用特征Coord并获取错误
显式生命周期限制
在这种情况下,如何设置特征的生命周期?
extern crate collections;
use super::wp;
use coord::Coord;
pub struct Route<'a> {
waypoints: &'a Vec<wp::Waypoint>
}
pub struct AMoreDifferentRoute<'a> {
waypoints: &'a Vec<Coord>
}
Run Code Online (Sandbox Code Playgroud)