小编hel*_*low的帖子

python中"append"和"+"的区别是什么?

我不知道f()和之间有什么区别g().

在函数中f,只要调用函数,就会累积列表L.

但在功能上g,它不..

def f(a, L=[]):
    L.append([2]);
    print(L);

def g(a, L=[]):
    L = L+[2];
    print(L);

print("f:")
f(1) # [[2]]
f(2) # [[2], [2]]
f(3) # [[2], [2], [2]]

print("g:")
g(1) # [2]
g(2) # [2]
g(3) # [2]
Run Code Online (Sandbox Code Playgroud)

python

9
推荐指数
1
解决办法
1310
查看次数

SIMD代码在Debug中工作,但不在Release中

此代码在调试模式下工作,但由于在释放模式下断言而导致混乱.

use std::arch::x86_64::*;

fn main() {
    unsafe {
        let a = vec![2.0f32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0];
        let b = -1.0f32;

        let ar = _mm256_loadu_ps(a.as_ptr());
        println!("ar: {:?}", ar);

        let br = _mm256_set1_ps(b);
        println!("br: {:?}", br);

        let mut abr = _mm256_setzero_ps();
        println!("abr: {:?}", abr);

        abr = _mm256_fmadd_ps(ar, br, abr);
        println!("abr: {:?}", abr);

        let mut ab = [0.0; 8];
        _mm256_storeu_ps(ab.as_mut_ptr(), abr);
        println!("ab: {:?}", ab);

        assert_eq!(ab[0], -2.0f32);
    }
}
Run Code Online (Sandbox Code Playgroud)

(游乐场)

simd rust

9
推荐指数
1
解决办法
189
查看次数

为自定义类型实现切片

我有这个结构:

struct Test {
    data: Vec<u8>,
}

impl Test {
    fn new() -> Self {
        return Test { data: Vec::new() };
    }
}

let a = Test::new();
// populate something into a...
Run Code Online (Sandbox Code Playgroud)

我想为这种类型实现切片,在执行 eg 时&a[2..5],它返回一个指向2..5其内部的切片data。可以在 Rust 中做到这一点吗?

rust

9
推荐指数
1
解决办法
1951
查看次数

在闭包之间共享弧

我正在尝试编写一个简单的 TCP 服务器来读取和广播消息。
我正在使用 Tokio,但我认为这更像是一个普遍的 Rust 问题。

我有一个具有共享状态的弧:
let state = Arc::new(Mutex::new(Shared::new(server_tx)));

后来我想生成 2 个线程,它们将使用对该状态的引用:

let server = listener.incoming().for_each(move |socket| {
    // error[E0382]: capture of moved value: `state`
    process(socket, state.clone());
    Ok(())
}).map_err(|err| {
    println!("accept error = {:?}", err);
});

let receive_sensor_messages = sensors_rx.for_each(move |line| {
    println!("Received sensor message, broadcasting: {:?}", line);

    // error[E0597]: borrowed value does not live long enough
    // error[E0507]: cannot move out of borrowed content 
    for (_, tx) in state.clone().lock().unwrap().clients {
        tx.unbounded_send(line.clone()).unwrap();
    }
    Ok(())
}).map_err(|err| {
    println!("line …
Run Code Online (Sandbox Code Playgroud)

rust

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

使用双下划线时启用编译器警告

我们假设以下代码

int __foo(void) {
    return 0;
}

int _BAR(void) {
    return 3;
}

int main(void) {
    return __foo() & _BAR();
}
Run Code Online (Sandbox Code Playgroud)

双下划线和单个下划线后跟一个大写字母符号是保留的,因此不允许(这是一个C++问题,但它也提到了C规则).

我尝试了-Wall -Wextra -pedantic关于gcc的-Weverything选项和关于clang的选项,两者都没有对此发出警告.

有没有办法为此启用编译器警告?

c gcc clang

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

在 gdb-multiarch 中指定架构

如果我使用任何 arm 编译器(例如arm-none-eabi-gcc)编译 C 程序,然后gdb-multiarch将二进制文件作为第二个参数调用,它将正确确定机器类型,并且我可以调试我的远程应用程序。

但是,如果我gdb-multiarch自己调用,它将假定我的机器类型(x86_64)并尝试使用错误的架构调试远程目标。

如何在 中指定机器类型/架构(例如armv5tegdb-multiarch

c gdb

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

如何在C#中返回命名元组?

我有一个属性,返回两个类型的项目DateTime.返回这些值时,我必须将它们作为Item1和引用Item2.如何使用自定义名称返回,例如

filter?.DateRanges.From
filter?.DateRanges.To
Run Code Online (Sandbox Code Playgroud)

 

public Tuple<DateTime, DateTime> DateRanges
{
    get
    {
        From = DateTime.Now.AddDays(-1).Date.AddMonths(-1);
        To = DateTime.Now.AddDays(-1).Date;

        if (Preset != 0)
        {
            if (Preset == DatePreset.SpecificRange)
            {
                From = From.Date;
                To = To.Date;
            }
            else
            {
                var dateRange = DateTime.Today.AddDays(-1).GetDateRangeByPreset(Preset);
                From = dateRange.From;
                To = dateRange.To;
            }
        }

        return new Tuple<DateTime, DateTime>(From, To);
    }
Run Code Online (Sandbox Code Playgroud)

用法:

var from = filter?.DateRanges.Item1;
var to = filter?.DateRanges.Item2;
Run Code Online (Sandbox Code Playgroud)

c# datetime tuples get set

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

OSX 上 MIPS MT7688 OpenWRT 的交叉编译 (mipsel-unknown-linux-musl)

当我尝试使用 rustc 1.32.0-nightly 在 OSX 上为小端 MIPS(运行 OpenWRT 的 MT7688 处理器)交叉编译 Cargo starter main.rs 文件时,出现以下错误:

cargo build --target=mipsel-unknown-linux-musl
   Compiling led v0.1.0 (/Users/petrus/Projects/led)
error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-Wl,--eh-frame-hdr" "-L" "/Users/petrus/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/mipsel-unknown-linux-musl/lib" "/Users/petrus/Projects/led/target/mipsel-unknown-linux-musl/debug/deps/led-fb2a88ec64854daf.2kthj4han7xcr84g.rcgu.o" "/Users/petrus/Projects/led/target/mipsel-unknown-linux-musl/debug/deps/led-fb2a88ec64854daf.440j3fk0cam0b0pu.rcgu.o" "/Users/petrus/Projects/led/target/mipsel-unknown-linux-musl/debug/deps/led-fb2a88ec64854daf.482rers61msj2848.rcgu.o" "/Users/petrus/Projects/led/target/mipsel-unknown-linux-musl/debug/deps/led-fb2a88ec64854daf.498udk2wtgjsw4ib.rcgu.o" "/Users/petrus/Projects/led/target/mipsel-unknown-linux-musl/debug/deps/led-fb2a88ec64854daf.4uh6jdaux45o6bh1.rcgu.o" "/Users/petrus/Projects/led/target/mipsel-unknown-linux-musl/debug/deps/led-fb2a88ec64854daf.5fq5qqfqkwjepod2.rcgu.o" "-o" "/Users/petrus/Projects/led/target/mipsel-unknown-linux-musl/debug/deps/led-fb2a88ec64854daf" "/Users/petrus/Projects/led/target/mipsel-unknown-linux-musl/debug/deps/led-fb2a88ec64854daf.49n6u1xnbbs66t12.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/Users/petrus/Projects/led/target/mipsel-unknown-linux-musl/debug/deps" "-L" "/Users/petrus/Projects/led/target/debug/deps" "-L" "/Users/petrus/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/mipsel-unknown-linux-musl/lib" "-Wl,--start-group" "-Wl,-Bstatic" "/Users/petrus/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/mipsel-unknown-linux-musl/lib/libstd-27a0dffe96f2ad3e.rlib" "/Users/petrus/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/mipsel-unknown-linux-musl/lib/libpanic_unwind-fe8b80af161a561e.rlib" "/var/folders/rl/b7dvjss14wj6415t0v4f7z3m0000gn/T/rustcFd840X/libunwind-ecc019d8c6cb3f8a.rlib" "/var/folders/rl/b7dvjss14wj6415t0v4f7z3m0000gn/T/rustcFd840X/liblibc-5d68beb2e4661bda.rlib" "/Users/petrus/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/mipsel-unknown-linux-musl/lib/liballoc-de565f8c0b8e0971.rlib" "/Users/petrus/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/mipsel-unknown-linux-musl/lib/librustc_std_workspace_core-0a55bee6cc97e346.rlib" "/Users/petrus/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/mipsel-unknown-linux-musl/lib/libcore-4075eb2b0854a330.rlib" "-Wl,--end-group" "/Users/petrus/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/mipsel-unknown-linux-musl/lib/libcompiler_builtins-ecf284221505c8a3.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lc"
  = note: clang: warning: argument unused during …
Run Code Online (Sandbox Code Playgroud)

macos openwrt mips cross-compiling rust

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

如何在编译期间检查 Rust 中设置的功能?

我正在尝试使用 Rusts 功能有条件地编译我的板条箱中的模块,并且仅在启用功能时才使用它。当设置该功能时,条件编译工作正常,但在未设置该功能时拒绝编译。

我使用相同的功能标志有条件地导入主模块中的模块,因此我的假设是,当不使用该功能时不应导入该模块。

#[cfg(feature = "debug")]
pub mod k {
    pub struct S { pub x: i32, pub y: i32}
}
Run Code Online (Sandbox Code Playgroud)

以及我如何在 main 中使用它

pub fn main() {
    if cfg!(feature = "debug") {
        use self::k;
        let _s = k::S {x: 4, y: 5};
    }

    let g = vec![1, 2, 4];
    println!("{:?}", g);
}
Run Code Online (Sandbox Code Playgroud)

如果我通过标志启用该功能,--features那么它会按预期进行编译:

#[cfg(feature = "debug")]
pub mod k {
    pub struct S { pub x: i32, pub y: i32}
}
Run Code Online (Sandbox Code Playgroud)

但是,当我没有通过时,--features它会失败,我的期望是它应该跳过带有该cfg!集合的块。 …

rust rust-cargo

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

从使用期货的套接字列表中选择

我正在尝试在夜间Rust 1.38中使用futures-preview = "0.3.0-alpha.16"和进行不稳定的async-await语法runtime = "0.3.0-alpha.6"。感觉真的很酷,但是文档还很稀缺,我被卡住了。

为了超越基本示例,我想创建一个应用程序:

  1. 在给定端口上接受TCP连接;
  2. 将从任何连接接收到的所有数据广播到所有活动连接。

现有的文档和示例使我到目前为止:

#![feature(async_await)]
#![feature(async_closure)]

use futures::{
    prelude::*,
    select,
    future::select_all,
    io::{ReadHalf, WriteHalf, Read},
};

use runtime::net::{TcpListener, TcpStream};

use std::io;

async fn read_stream(mut reader: ReadHalf<TcpStream>) -> (ReadHalf<TcpStream>, io::Result<Box<[u8]>>) {
    let mut buffer: Vec<u8> = vec![0; 1024];
    match reader.read(&mut buffer).await {
        Ok(len) => {
            buffer.truncate(len);
            (reader, Ok(buffer.into_boxed_slice()))
        },
        Err(err) => (reader, Err(err)),
    }
}

#[runtime::main]
async fn main() -> std::io::Result<()> {
    let mut listener = TcpListener::bind("127.0.0.1:8080")?;
    println!("Listening on {}", …
Run Code Online (Sandbox Code Playgroud)

rust async-await

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

标签 统计

rust ×6

c ×2

async-await ×1

c# ×1

clang ×1

cross-compiling ×1

datetime ×1

gcc ×1

gdb ×1

get ×1

macos ×1

mips ×1

openwrt ×1

python ×1

rust-cargo ×1

set ×1

simd ×1

tuples ×1