小编Are*_* C.的帖子

使用 Docker 构建缓存 Rust 依赖项

我在 Rust + Actix-web 中有一个 hello world web 项目。我有几个问题。首先是代码的每次更改都会导致重新编译整个项目,包括下载和编译每个 crate。我想像在正常开发中一样工作 - 这意味着缓存编译的 crate 并且只重新编译我的代码库。第二个问题是它不会暴露我的应用程序。无法通过网络浏览器访问

Dockerfile:

FROM rust

WORKDIR /var/www/app

COPY . .

EXPOSE 8080

RUN cargo run
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml:

version: "3"
services:
  app:
    container_name: hello-world
    build: .
    ports:
      - '8080:8080'
    volumes:
      - .:/var/www/app
      - registry:/root/.cargo/registry

volumes:
  registry:
    driver: local
Run Code Online (Sandbox Code Playgroud)

主.rs:

extern crate actix_web;

use actix_web::{web, App, HttpServer, Responder};

fn index() -> impl Responder {
    "Hello world"
}

fn main() -> std::io::Result<()> {
    HttpServer::new(|| App::new().service(web::resource("/").to(index)))
        .bind("0.0.0.0:8080")?
        .run()
}
Run Code Online (Sandbox Code Playgroud)

货物.toml:

[package]
name = …
Run Code Online (Sandbox Code Playgroud)

rust docker dockerfile actix-web

25
推荐指数
6
解决办法
5834
查看次数

如何将 Vec&lt;Result&lt;T, E&gt;&gt; 转换为 Result&lt;Vec&lt;T&gt;, E&gt;?

是否有任何固执且更优雅的方式来转换Vec<Result<T, E>>Result<Vec<T>, E>?我想知道Ok<Vec<T>>vector 的所有值是否都是Ok<T>Err<E>如果至少有一个是Err<E>

例子:

fn vec_of_result_to_result_of_vec<T, E>(v: Vec<Result<T, E>>) -> Result<Vec<T>, E>
where
    T: std::fmt::Debug,
    E: std::fmt::Debug,
{
    let mut new: Vec<T> = Vec::new();

    for el in v.into_iter() {
        if el.is_ok() {
            new.push(el.unwrap());
        } else {
            return Err(el.unwrap_err());
        }
    }

    Ok(new)
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种更具声明性的方式来写这个。这个功能迫使我写一个where永远不会被使用并且Err(el.unwrap_err())看起来毫无用处的子句。换句话说,代码做了很多事情只是为了让编译器满意。我觉得这是一个很常见的情况,有更好的方法来做到这一点。

monads rust

6
推荐指数
2
解决办法
2071
查看次数

为什么 TypeScript 程序员更喜欢接口而不是类型

我看到很多 TypeScript 开发人员过度使用接口。事实上,他们几乎将它用于所有事情,即使他们的代码比面向对象更实用。就我个人而言,我更喜欢type哪个更灵活,并且如果接口由任何类实现或者仅用于定义对象类型,则不会混淆。是否有任何优势可以使用,interface或者type它是开发人员习惯做的某种遗留的事情吗?

typescript

5
推荐指数
1
解决办法
1954
查看次数

标签 统计

rust ×2

actix-web ×1

docker ×1

dockerfile ×1

monads ×1

typescript ×1