小编Net*_*ave的帖子

如何从函数返回当前工作目录?

具有高级编程语言的经验。我读了 Rust 这本书,现在试图生存并理解 Rust 中的“事物”是如何工作的。我希望有人解释一下到底是什么 - Ok(()) 以及如何处理它?我的目标是将函数的结果返回到输出的变量:

    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/rcp ./file/ aba`
Ok(
    "/home/tomand/rcp",
)
Run Code Online (Sandbox Code Playgroud)

这是完整的代码:

use std::fs;
use std::env;
use serde_json;
use regex::Regex;
use std::path::Path;

fn determinate_file_size(file: &str) -> u64 {
    fs::metadata(file).unwrap().len()
}

fn determinate_is_it_file_or_dirctory(arg: &str) -> &str {
    let file = "File";
    let dir = "Directory";
    let re = Regex::new(r"/").unwrap();
    if re.is_match(arg) {
        return dir;
    }
    return file;
}

fn collect_user_arguments() -> Vec<String> {
    env::args().collect()
}

fn check_if_arguments_count_valid(args: &Vec<String>) -> …
Run Code Online (Sandbox Code Playgroud)

rust rust-cargo

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

R的哪个()和which.min()相当于Python

我在这里阅读了类似的主题.我认为问题不同或者至少.index()无法解决我的问题.

这是R中的一个简单代码及其答案:

x <- c(1:4, 0:5, 11)
x
#[1]  1  2  3  4  0  1  2  3  4  5 11
which(x==2)
# [1] 2 7
min(which(x==2))
# [1] 2
which.min(x)
#[1] 5
Run Code Online (Sandbox Code Playgroud)

它只返回满足条件的项的索引.

如果x是Python的输入,我如何获得符合条件的元素的indeces x==2和数组中最小的元素which.min.

x = [1,2,3,4,0,1,2,3,4,11] 
x=np.array(x)
x[x>2].index()
##'numpy.ndarray' object has no attribute 'index'
Run Code Online (Sandbox Code Playgroud)

python numpy r which

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

如何让Visual Studio将所需的.dll文件复制到release文件夹中?

我正在使用Visual Studio 2012和C++开发Qt应用程序.

我能够编译并调试它,但是,不知何故,没有.dll文件在DebugRelease文件夹中.我已经尝试过其他一些帖子解决方案,但都没有效果.

那么,我如何让Visual Studio将所需的.dll文件复制到release文件夹中?

我认为它应该是一个选择.我刚刚开始考虑手工复制它.

c++ dll qt visual-studio-2012

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

无法从 json 反序列化 chrono::DateTime

我遇到一个有趣的问题。由于某种原因,serde 无法chrono::DateTime<Utc>从与序列化格式相同的字符串中反序列化对象(但如果我用它保存变量,它就会这样做):

use chrono; // 0.4.11
use serde_json; // 1.0.48

fn main() {
    let date = chrono::Utc::now();
    println!("{}", date);

    let date_str = serde_json::to_string(&date).unwrap();
    println!("{}", date_str);

    let parsed_date: chrono::DateTime<chrono::Utc> = serde_json::from_str(&date_str).unwrap();
    println!("{}", parsed_date);

    assert_eq!(date, parsed_date);

    let date = "2020-03-28T16:29:04.644008111Z";
    let _: chrono::DateTime<chrono::Utc> = serde_json::from_str(&date).unwrap();
}
Run Code Online (Sandbox Code Playgroud)

这是游乐场链接

哪个输出:

   Compiling playground v0.0.1 (/playground)
    Finished dev [unoptimized + debuginfo] target(s) in 1.01s
     Running `target/debug/playground`
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error("invalid type: integer `2020`, expected a formatted …
Run Code Online (Sandbox Code Playgroud)

json rust rust-chrono serde

8
推荐指数
1
解决办法
4679
查看次数

如何在跟踪中使用动态跨度名称?

我需要动态地使用不同名称来检测跨度。如何创建具有动态命名的跟踪范围?

use tracing; // 0.1.22

fn main() {
    let name: &'static str = "foo bar";
    let span = tracing::span!(tracing::Level::TRACE, name);
    let span_handle = span.enter();
    tracing::info!("Hello, world!");
    drop(span_handle);
}
Run Code Online (Sandbox Code Playgroud)
error[E0435]: attempt to use a non-constant value in a constant
 --> src/main.rs:5:54
  |
5 |     let span = tracing::span!(tracing::Level::TRACE, name);
  |                                                      ^^^^ non-constant value
Run Code Online (Sandbox Code Playgroud)

操场

trace rust rust-tracing

8
推荐指数
1
解决办法
2193
查看次数

寄存器类型后gob decode无法解码接口

我定义了这些类型:

func init() {
    gob.RegisterName("MyMessageHeader", MyMessageHeader{})
    gob.RegisterName("OtherMsg", OtherMsg{})
}

//
// Messages
//

type MyMessageHeader struct {
    MessageId InstanceIdType
    OtherId   uint64
}

type MyMessage interface {
    Id() *MyMessageHeader
}

type otherStruct struct {
    X uint8
    Y uint8
}
type OtherMsg struct {
    MyMessageHeader
    OtherField *otherStruct
}


func (m *OtherMsg) Id() *MyMessageHeader {
    return &m.MyMessageHeader
}

func MarshalMessage(m MyMessage) ([]byte, error) {
    var buff bytes.Buffer
    encoder := gob.NewEncoder(&buff)
    if err := encoder.Encode(&m); err != nil {
        return nil, errors.Newf("Could not marshal …
Run Code Online (Sandbox Code Playgroud)

methods interface go gob

7
推荐指数
1
解决办法
1053
查看次数

如何将一组跟踪订阅者合并为一个?

假设我有一个返回 a 的函数Vec<Box<dyn Subscriber>>,并且我想将它们组合成一个函数以设置为默认订阅者。这个怎么做?

我正在尝试做这样的事情,但我无法使类型匹配:

pub fn init_log(subscribers: Vec<Box<dyn Subscriber>>) -> Result<(), Error> {
    use tracing_subscriber::prelude::*;
    let mut layers: Vec<Box<dyn Layer<dyn Subscriber>>> = Vec::new();

    for subscriber in subscribers.iter().drain(..) {
        let layer: Box<dyn Layer<dyn Subscriber>> =
          Box::new(tracing_subscriber::layer::Identity::new().with_subscriber(subscriber));

        layers.push(layer);
    }

    let init_layer: Box<dyn Layer<dyn Subscriber>> =
        Box::new(tracing_subscriber::layer::Identity::new());

    let acc_subscriber: Layered<Box<dyn Layer<dyn Subscriber>>, _> =
        tracing_subscriber::fmt().finish().with(init_layer);
    
    let composed = layers
        .drain(..)
        .into_iter()
        .fold(acc_subscriber, |acc, layer| acc.with(layer));
    
    tracing::subscriber::set_global_default(composed);

    Ok(())
}
Run Code Online (Sandbox Code Playgroud)
error[E0277]: the trait bound `Box<dyn tracing::Subscriber>: tracing::Subscriber` is not satisfied
  --> jormungandr\src\settings\logging.rs:97:85 …
Run Code Online (Sandbox Code Playgroud)

rust rust-tracing

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

如何在匹配表达式中多重绑定或模式?

有没有办法将一堆或匹配项绑定到同名?

例如,在下面的代码中,我希望n是 或 匹配、12或 中的任何一个3

fn main() {
    match 2 {
        n @ 1 | 2 | 3 => {
            println!("{}", n);
        }
        _ => {},
    }
}
Run Code Online (Sandbox Code Playgroud)

操场

它抱怨:

error[E0408]: variable `n` is not bound in all patterns
 --> src/main.rs:3:17
  |
3 |         n @ 1 | 2 | 3 => {
  |         -       ^   ^ pattern doesn't bind `n`
  |         |       |
  |         |       pattern doesn't bind `n`
  |         variable …
Run Code Online (Sandbox Code Playgroud)

match rust

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

在这个uint8数组中搜索模式的更优雅方式

我在嵌入式系统中使用C语言.我有这个uint8数组.

static uint8_t data_array[20];
Run Code Online (Sandbox Code Playgroud)

data_array的内容以'\n'.结尾.

我想检查前3个字节是否为"ABC".我就是这样做的.

if (data_array[0]=='A' && data_array[1]=='B' && data_array[2]=='C')
{
    printf("pattern found\n");
}
Run Code Online (Sandbox Code Playgroud)

是否有更优雅的方法来检测模式?如果模式由10个字节组成,我的方法可能很麻烦.

c

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

将字典转换为字典

我有像这样的字典的字符串:

{"h":"hello"}
Run Code Online (Sandbox Code Playgroud)

我想按照这里的指示将其转换为实际字典

>>> import json
>>> 
>>> s = "{'h':'hello'}"
>>> json.load(s)
Run Code Online (Sandbox Code Playgroud)

然而,我收到了一个错误:

回溯(最近通话最后一个):文件"",1号线,在文件"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/ 初始化的.py",线路286,在加载返回负载(fp.read(),

AttributeError:'str'对象没有属性'read'

我的代码有什么问题,以及如何将字符串转换为实际字典?谢谢.

python json dictionary

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

标签 统计

rust ×5

json ×2

python ×2

rust-tracing ×2

c ×1

c++ ×1

dictionary ×1

dll ×1

go ×1

gob ×1

interface ×1

match ×1

methods ×1

numpy ×1

qt ×1

r ×1

rust-cargo ×1

rust-chrono ×1

serde ×1

trace ×1

visual-studio-2012 ×1

which ×1