我正在尝试使用this source as a tutorial使用Iron构建一个Web服务,但我在编译hyper时遇到错误:
[package]
name = "hello"
version = "0.1.0"
authors = ["root"]
[dependencies]
language-tags = "0.2.2"
iron = "0.4.0"
我使用的版本:
Cargo.toml
extern crate iron;
use iron::prelude::*;
use iron::status;
use iron::mime::Mime;
fn main() {
Iron::new(|_: &mut Request| {
let content_type = "application/json".parse::<Mime>().unwrap();
Ok(Response::with((content_type, status::Ok, "{ respone: \"Hello world!\" }")))
}).http("localhost:3009").unwrap();
}
main.rs:
/* Minimum interval for a periodic job, in milliseconds. */
private static final long MIN_PERIOD_MILLIS = 15 * 60 * 1000L; // 15 minutes
我只在Cargo.toml中添加了语言标签,因为我认为这样可以解决我的问题。没有进行其他更改。
答案 0 :(得分:1)
旧版本的Rust导致了这个问题。今天Rust的稳定版本是1.14.0,但在我的Digital Ocean VM上,预装了Rust 1.7。即使在运行官方安装程序后,版本仍为1.7:
curl https://sh.rustup.rs -sSf | sh
安装后说:
欢迎来到Rust!
这将下载并安装Rust的官方编译器 编程语言及其包管理器Cargo。
它会将货物,rustc,rustup和其他命令添加到Cargo的垃圾箱 目录,位于:
/root/.cargo/bin
然后,此路径将添加到您的PATH环境变量中 修改位于以下位置的配置文件:
/root/.profile
我使用不使用〜/ .profile的zsh。因此,我没有更改PATH
环境变量,因此命令cargo run
指向/usr/bin/cargo
中预先安装的旧版本而不是~/.cargo/bin
。
您可以使用命令which cargo
或which rustc
找到可执行文件的位置。
解决方案是使用~/.cargo/bin/cargo run
。对于zsh,您还可以通过添加
~/.cargo/bin
添加到PATH
环境变量中
export PATH="~/.cargo/bin:$PATH"
到你的.zshrc