小编Hel*_*got的帖子

如何在不克隆字符串的情况下在 Rust 中构建灵活的多类型数据系统?

我想构建一个系统,其中不同类型的数据 ( i32, String, ...) 在修改数据的函数之间流动。例如,我想要一个add函数来获取“一些”数据并添加它。

add函数获取某种类型的东西,Value如果Value是 an i32,它将两个i32值相加,如果它是 type String,则返回一个组合了两个字符串的字符串。

我知道这对于模板编程(或在 Rust 中称为什么,我来自 C++)几乎是完美的,但在我的情况下,我想要处理这些东西的小代码块。

例如,使用f64and String,使用FloatandText作为名称,我有:

pub struct Float {
    pub min: f64,
    pub max: f64,
    pub value: f64,
}

pub struct Text {
    pub value: String,
}

pub enum Value {
    Float(Float),
    Text(Text),
}
Run Code Online (Sandbox Code Playgroud)

现在我想实现一个函数来获取一个应该是一个字符串的值并对其做一些事情,所以我实现了以下to_string()方法Value

impl std::string::ToString for Value {
    fn to_string(&self) -> …
Run Code Online (Sandbox Code Playgroud)

string polymorphism type-conversion rust borrowing

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

如何与超级请求处理程序共享不可变的配置数据?

我正在尝试在 Rust 中开发一个基于超级服务器的应用程序。有一个 INI 文件保存配置,如绑定 IP、数据库等。

我不想在每个请求上解析 INI 文件,并且可以保留配置数据直到服务器重新启动。如何将已解析数据的结构提供给请求处理程序?

我尝试了多种方法,例如 using std::sync::Arc,但目前唯一有效的方法是使用 a static,但我想避免unsafe阻塞。

这是一个完整的(非工作)示例:

Cargo.toml

[package]
name = "demo"
version = "0.1.0"
edition = "2018"

[dependencies]
hyper = "0.12"
rust-ini = "0.13"
Run Code Online (Sandbox Code Playgroud)

演示文件

[Demo]
value="some value"
Run Code Online (Sandbox Code Playgroud)

src/main.rs

[package]
name = "demo"
version = "0.1.0"
edition = "2018"

[dependencies]
hyper = "0.12"
rust-ini = "0.13"
Run Code Online (Sandbox Code Playgroud)

错误

[Demo]
value="some value"
Run Code Online (Sandbox Code Playgroud)

rust hyper

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

c ++ singleton,stackoverflows示例不起作用

我正在尝试用gcc制作一个单例

我在stackoverflow上找到了几个例子,遗憾的是它们对我不起作用.

这是我的.h文件:

#ifndef GLOBALINFO_H
#define GLOBALINFO_H

#include <string>
#include <iostream>

using namespace std;
class GlobalInfo
{
    private:
        GlobalInfo();
        GlobalInfo(GlobalInfo const&);
            GlobalInfo& operator=(GlobalInfo const&);


    public:
        static GlobalInfo& GetInstance();
        virtual ~GlobalInfo();

        bool isFullScreen;
        int screenWidth;
        int screenHeight;
        string title;

    protected:
};

#endif // GLOBALINFO_H
Run Code Online (Sandbox Code Playgroud)

这是我的.cpp:

#include "GlobalInfo.h"

GlobalInfo::GlobalInfo()
{
    isFullScreen = false;
    screenWidth = 800;
    screenHeight = 600;
    cout << "creating GlobalInfo" << endl;
}

GlobalInfo::~GlobalInfo()
{
}

GlobalInfo &GlobalInfo::GetInstance() {
    static GlobalInfo instance;
    return instance;
}
Run Code Online (Sandbox Code Playgroud)

GNU C说:

include\GlobalInfo.h|12|error: 'GlobalInfo::GlobalInfo(const …
Run Code Online (Sandbox Code Playgroud)

c++ singleton

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