小编ehs*_*ird的帖子

如果我知道这是可能的,如何将通用 T 转换为 f32?

我有一个struct只有一个字段的泛型,只能是i32or f32

trait MyInt {
    fn blank();
}

impl MyInt for i32 {
    fn blank() {
        unimplemented!()
    }
}

impl MyInt for f32 {
    fn blank() {
        unimplemented!()
    }
}

struct MyStruct<T> where T: MyInt {
    field: T
}

impl<T> MyStruct<T> where T: MyInt {
    fn new(var: T) -> MyStruct<T> {
        MyStruct {
            field: var
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想添加一个返回字段 value 的方法as f32,无论它是i32还是f32。我知道这种转换应该总是可能的,因为字段类型仅限于上面提到的两种,但我该怎么做呢?显然as只适用于原始类型,我尝试走这From条路,但我做错了什么,这不起作用。

fn to_f32(&self) -> …
Run Code Online (Sandbox Code Playgroud)

generics rust

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

如何将变量移出闭包?

我有一个简单的GTK应用程序,我需要选择一个文件夹并将其路径传递给闭包之外的变量.

let mut path = "".to_owned();

button_open.connect_clicked(move |_| {
    let file_chooser = gtk::FileChooserDialog::new(
        "Open File", None, gtk::FileChooserAction::SelectFolder,
        [("Open", gtk::ResponseType::Ok), ("Cancel", gtk::ResponseType::Cancel)]);
    if file_chooser.run() == gtk::ResponseType::Ok as i32 {
        let filename = file_chooser.get_current_folder().unwrap();
    }

    file_chooser.destroy();
});
Run Code Online (Sandbox Code Playgroud)

我该如何分配filenamepath?如果我只是写

path = filename;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

src\main.rs:46:13: 46:28 error: cannot assign to captured outer variable in an `Fn` closure
src\main.rs:46             path = filename;
Run Code Online (Sandbox Code Playgroud)

closures rust

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

创建大型数组时,线程'<main>'溢出了它的堆栈

staticA_INTERSECTS_A来自以下代码的变量返回错误.这段代码应该返回一个大的1356x1356 2D数组bool.

use lazy_static::lazy_static; // 1.2.0

#[derive(Debug, Copy, Clone, Default)]
pub struct A {
    pub field_a: [B; 2],
    pub ordinal: i32,
}

#[derive(Debug, Copy, Clone, Default)]
pub struct B {
    pub ordinal: i32,
}

pub const A_COUNT: i32 = 1356;

lazy_static! {
    pub static ref A_VALUES: [A; A_COUNT as usize] = { [A::default(); A_COUNT as usize] };

    pub static ref A_INTERSECTS_A: [[bool; A_COUNT as usize]; A_COUNT as usize] = {
        let mut result = [[false; A_COUNT …
Run Code Online (Sandbox Code Playgroud)

stack-overflow arrays rust

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

克隆一个不能在每次使用时实现 Copy 的自定义结构是最好的方法吗?

我有一个具有Vec字段且无法实现的结构Copy

#[derive(Clone, Debug)]
struct MyStruct {
    field: Vec<i32>,
}

impl MyStruct {
    fn new () -> MyStruct {
        MyStruct {
            field: vec![1, 2],
        }
    }

    fn overwrite(&mut self, strt: MyStruct) {
        self.field = strt.field;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我想在我的代码中多次使用它,我clone()每次都必须使用它:

fn main() {
    let mut s = MyStruct::new();
    let s2 = MyStruct::new();

    s.overwrite(s2.clone());

    println!("{:?}", s2);
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但这是完成此任务的最佳方式吗?还有其他更惯用的方法吗?

rust

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

Django-React身份验证:限制可以获得simpleJWT令牌的用户

我的后端有两个 React 前端:第一个供所有用户使用,第二个是管理面板,只能由 is_staff 用户使用。

使用 simplejwt 令牌限制访问的最佳方法是什么?

我已重写 TokenObtainPairSerializer 以包含其他字段,例如“is_staff”。

所以我有两个问题:

  1. 仅仅检查前端的 is_staff 字段就足够安全了吗?在我看来这不是一个好主意。

  2. 如果我想为管理员身份验证创建第二个 API URL 条目并覆盖后端的身份验证逻辑以仅向员工用户颁发令牌。我到底应该重写什么方法/类来改变这个?这是一个好主意吗?

django jwt reactjs

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

为什么我的变量不够长寿?

我有一段简单的代码,可以按行将文件读入矢量

use std::io::{self, Read};
use std::fs::File;

fn file_to_vec(filename: &str) -> Result<Vec<&str>, io::Error> {
    let mut file = try!(File::open(filename));
    let mut string = String::new();
    try!(file.read_to_string(&mut string));
    string.replace("\r", "");

    let data: Vec<&str> = string.split('\n').collect();

    Ok(data)
}

fn main() {}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

error[E0597]: `string` does not live long enough
  --> src/main.rs:10:27
   |
10 |     let data: Vec<&str> = string.split('\n').collect();
   |                           ^^^^^^ does not live long enough
...
13 | }
   | - borrowed value only lives until here
   |
note: borrowed value must be …
Run Code Online (Sandbox Code Playgroud)

lifetime rust

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

从网站下载并获取 HTML 代码

我需要从某个网页下载 HTML 代码。完成这项任务的最佳方法是什么?据我所知,现在很少有适用于 Rust 的 Web 框架,而 hyper 是大多数人使用的框架吗?但是在搜索它的文档后,我找不到方法。我得到的最接近的是这个

extern crate hyper;

use hyper::Client;

fn main() {
    let client = Client::new();
    let res = client.get("http://www.bloomberg.com/")
        .send()
        .unwrap();

    println!("{:?}", res);
}
Run Code Online (Sandbox Code Playgroud)

但它返回Response,它似乎不包含来自 HTML 正文的任何​​代码。

parsing rust web

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

标签 统计

rust ×6

arrays ×1

closures ×1

django ×1

generics ×1

jwt ×1

lifetime ×1

parsing ×1

reactjs ×1

stack-overflow ×1

web ×1