小编Pal*_*gam的帖子

如何在 Rust 工具链之间切换?

rustup help toolchain 列出以下子命令

SUBCOMMANDS:
    list         List installed toolchains
    install      Install or update a given toolchain
    uninstall    Uninstall a toolchain
    link         Create a custom toolchain by symlinking to a directory
    help         Prints this message or the help of the given subcommand(s)
Run Code Online (Sandbox Code Playgroud)

我安装了以下工具链

stable-x86_64-unknown-linux-gnu (default)
nightly-2019-09-05-x86_64-unknown-linux-gnu
nightly-x86_64-unknown-linux-gnu
master
Run Code Online (Sandbox Code Playgroud)

我试图解决 rust-clippy 的问题,所以我不得不安装主工具链。尽管将稳定设置为我的默认工具链,但我当前的工具链是主工具链,我想切换回稳定。如何在不卸载主工具链的情况下执行此操作?

没有 switch 子命令吗?

rust rustup

36
推荐指数
4
解决办法
2万
查看次数

Rabbitmq - Docker 连接在端口 5672 上被拒绝

我有一个用 Go 编写的 Web 服务器,可以与 Rabbitmq 和 Mongodb 交互。当我在没有容器的机器上运行所有这些服务器时(rabbitmq url:),amqp://guest:guest@localhost:5672它工作正常。

现在我尝试在单独的容器中运行所有这些服务。这是我的撰写文件

version: '3'
services:
  rabbitmq:
    image: rabbitmq
    container_name: rabbitmq
    ports:
      - 5672:5672
  mongodb:
    image: mongo
    container_name: mongodb
    ports:
      - 27017:27017
  web:
    build: .
    image: palash2504/collect
    container_name: collect-server
    restart: on-failure
    ports:
      - 3000:3000
    depends_on:
      - rabbitmq
      - mongodb
    links: ["rabbitmq", "mongodb"]

networks:
  default:
    external:
      name: collect-net
Run Code Online (Sandbox Code Playgroud)

这是我的服务器 dockerfile

FROM golang

ENV GO111MODULE=on


WORKDIR /app

COPY go.mod .
COPY go.sum .

RUN go mod download

COPY . .

RUN CGO_ENABLED=0 …
Run Code Online (Sandbox Code Playgroud)

rabbitmq docker docker-compose docker-network

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

如果借用的结构体字段没有实现复制或克隆特征,那么重用它的最佳方法是什么?

我正在为 TCP 服务器编写客户端

use std::net::TcpStream;
use std::io::{Read, Write, Error};

pub struct Client {
    addr: String,
    conn: Option<TcpStream>,
}

impl Client {
    pub fn connect(&mut self) {
        let res = TcpStream::connect(&self.addr);
        match res {
            Ok(c) => {
                self.conn = Some(c);
            },
            Err(_) => panic!(),
        }
    }

    pub fn version(self) -> Result<[u8; 8], Error> {
        let mut ver: [u8; 8] = [0;8];
        let command_string = b"VERSION\r\n";
        let res = self.conn.unwrap().write(&command_string[0..]);
        match res {
            Ok(_) => self.conn.unwrap().read(&mut ver[..]),
            Err(e) => panic!(e)
        };
        Ok(ver) …
Run Code Online (Sandbox Code Playgroud)

ownership rust

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

如何在具有空值的结构中设置字段?

新手 rustacean 在这里。我正在编写一个 TCP 客户端,并且conn在我的客户端结构中有一个字段。我的客户端实现了两种方法new来实例化结构并连接以打开与服务器的连接并将其设置为conn字段的值

pub struct FistClient {
    addr: String,
    conn: TcpStream,
}

impl FistClient {
    pub fn new(ip: &str, port: &str) -> Self {
        FistClient {
            addr: String::from(ip) + ":" + &String::from(port),
            // conn: <some-defaullt-value>,
        }
    }

    pub fn connect(&mut self, ip: &str, port: &str) {
        let res = TcpStream::connect(&self.addr);
        match res {
            Ok(c) => self.conn = c,
            Err(_) => panic!(),
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想conn将新方法中的字段设置为某个默认值。在 Go 中,我可以做类似的事情,conn: nil但在这里不起作用。我也尝试 …

null optional rust

4
推荐指数
3
解决办法
5482
查看次数

4
推荐指数
1
解决办法
7310
查看次数

如何使用货物发布发布优化的二进制文件?

我正在尝试将我的第一个箱子发布到 crates.io。

当我在本地构建项目时,我可以传递该--release标志来获取优化的二进制文件,但是当我这样做时,cargo publish --dry-run它似乎正在构建未优化的二进制文件,因为这是输出的倒数第二行:

Finished dev [unoptimized + debuginfo] target(s) in 24.79s
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想构建一个优化的二进制文件并将其发布到 crates.io。

rust rust-cargo

3
推荐指数
1
解决办法
962
查看次数

redis-cli 如何对在 HLL 或位图上执行 GET 返回的字符串值进行编码?

假设我有一个使用以下命令设置的位图

setbit key 0 1
setbit key 1 1
setbit key 2 0
setbit key 3 1
setbit key 4 1
Run Code Online (Sandbox Code Playgroud)

当我从 redis-cli 运行这个键时,我得到以下结果: "\xd8"

但是当我使用go-redis API 时得到了不同的结果:@

为了获得上述结果,我使用了以下代码:

package main

import (
    "fmt"

    "github.com/go-redis/redis"
)

func main() {
    client := redis.NewClient(&redis.Options{
        Addr:     "localhost:6379",
        Password: "",
        DB:       0,
    })

    pong, _ := client.Ping().Result()
    fmt.Println(pong)

    client.SetBit("key", 0, 1)
    client.SetBit("key", 1, 1)
    client.SetBit("key", 2, 0)
    client.SetBit("key", 3, 1)
    client.SetBit("key", 4, 1)  

    res := client.Get("bmk").Val()
    fmt.Println(res)

}
Run Code Online (Sandbox Code Playgroud)

我在 redis 文档中的任何地方都找不到 cli …

encoding go redis

2
推荐指数
1
解决办法
1156
查看次数

使用 rustc 编译代码时如何调用库目录之外的 Rust 代码?

我正在尝试使用以下布局编写一个 Rust 库:

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 examples\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.rs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 client.rs\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib.rs\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 target\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 rls\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 debug\n            \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n            \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 deps\n
Run Code Online (Sandbox Code Playgroud)\n\n

client.rs拥有所有代码并且客户端结构是公开的

\n\n

lib.rs包含pub mod client;

\n\n

示例/main.rs

\n\n
extern crate fistrs;\n\nuse fistrs::client::FistClient;\n\nfn main() {\n    let mut client = FistClient::new("localhost", "5575");\n    client.connect();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但当我运行这个时出现错误rustc examples/main.rs

\n\n
extern crate fistrs;\n\nuse fistrs::client::FistClient;\n\nfn main() {\n    let mut client = FistClient::new("localhost", "5575");\n    client.connect();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我的Cargo.toml

\n\n
[package]\nname = "fistrs"\nversion = "0.1.0"\nauthors = ["palash25 <npalash25@gmail.com>"]\nedition …
Run Code Online (Sandbox Code Playgroud)

rust

2
推荐指数
1
解决办法
260
查看次数

为什么 zig 中的用户定义类型需要是 const?

如果我需要在 Zig 中声明一个结构,我必须在它前面加上前缀const

const Arith = struct {
    x: i32,
    y: i32,

    fn add(self: *Arith) i32 {
        return self.x + self.y;
    }
};

test "struct test" {
    var testArith = Arith{
        .x = 9,
        .y = 9,
    };

    expect(testArith.add() == 18);
}
Run Code Online (Sandbox Code Playgroud)

但它可以用两种方式初始化var,那么const为什么类型声明需要一个常量关键字,而只关心结构体的实例const是否存在呢?

zig

0
推荐指数
1
解决办法
970
查看次数