小编rus*_*oue的帖子

在MediaPlayer中将数据源设置为原始ID

在MediaPlayer.create方法中,可以使用到Raw文件的id但是如何在setDataSource方法中使用它?

android android-mediaplayer

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

在gdb中使用coredump时,我如何确切地知道哪个线程导致了SIGSEGV?

我的应用程序使用超过8个线程.当我info threads在gdb中运行时,我看到线程和它们正在执行的最后一个函数.对我来说,确切地说哪个线程导致了SIGSEGV似乎并不明显.有可能告诉它吗?是线程1吗?线程如何编号?

c c++ gdb core segmentation-fault

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

在插入时自动填充MongoDB中的日期

MongoDB提供了一种在更新操作时由系统更新日期字段的方法:https://docs.mongodb.com/manual/reference/operator/update/currentDate/.插入操作有没有相同的东西?

mongodb

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

我是否可以在泛型函数中使用原始类型的特征?

我试图写一个通用的功能,这将尝试将字符串转换为数字类型一样i32,f64等等.如果字符串是不可自由兑换,然后将返回0.我正在寻找一个适合在我的通用函数中使用的特性:

use std::str::FromStr;

fn get_num_from_str<T: FromStr>(maybe_num_str: &String) -> T {
    let maybe_num = T::from_str(maybe_num_str.as_str());
    if maybe_num.is_ok() {
        return maybe_num.unwrap();
    }
    0 as T
}

fn main() {
    let num_str = String::from("12");
    println!("Converted to i32: {}", get_num_from_str::<i32>(&num_str));
}
Run Code Online (Sandbox Code Playgroud)

游乐场链接

我发现Rust有一个Primitive特征,之前被删除了.现在还有别的东西可以用吗?

我找到了一个解决方法:

use std::str::FromStr;

fn get_num_from_str<T: Default + FromStr>(maybe_num_str: &String) -> T {
    let maybe_num = T::from_str(maybe_num_str.as_str());
    maybe_num.unwrap_or(Default::default())
}
Run Code Online (Sandbox Code Playgroud)

游乐场链接

正如特征约束所暗示的那样,这应该适用于任何具有两者的实现的东西Default,FromStr并且我应该重命名该函数以反映这一点,但是知道是否只有原始数字类型的任何特征我仍然会很好用于确保此功能不能用于数字类型以外的任何其他功能.

rust

5
推荐指数
2
解决办法
613
查看次数

参数类型可能不够长

我有一个简单的程序,我试图实现多态帐户类型:

enum AccountType {
    INVALID,
    TYPE1,
    TYPE2,
}

trait Account {
    fn get_name(&self) -> String;
    fn get_type(&self) -> AccountType;
}

struct Accounts {
    accounts: Vec<Box<Account>>,
}

impl Accounts {
    fn new() -> Accounts {
        let accs: Vec<Box<Account>> = Vec::new();
        Accounts { accounts: accs }
    }

    fn add_account<A: Account>(&self, account: A) {
        self.accounts.push(Box::new(account));
    }
}

fn main() {
    let accounts = Accounts::new();
}
Run Code Online (Sandbox Code Playgroud)

(Rust Playground)

当我编译它时,我看到以下错误:

error[E0310]: the parameter type `A` may not live long enough
  --> src/main.rs:23:28
   | …
Run Code Online (Sandbox Code Playgroud)

rust

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

如何在Ruby中以相反的顺序有效地处理字符串中的行?

我试图找到以相反顺序处理Ruby字符串中的行的最有效方法.这是我的两种方法:

def double_reverse(lines)
    lines.reverse!
    lines.each_line do |line|
        line.chomp!
        line.reverse!
        puts line
    end
end

def split_and_reverse(lines)
    lines.split("\n").reverse.each do |line|
        puts line
    end
end

if __FILE__ == $0
    lines = "This is the first line.\nThis is the second line"
    double_reverse(lines)
    lines = "This is the first line.\nThis is the second line"
    split_and_reverse(lines)
end
Run Code Online (Sandbox Code Playgroud)

我想知道哪一个会使用更少的内存.还有其他方法可以使用更少的资源吗?我主要关心的是内存使用情况,但是如果我可以减少CPU的使用率也会很好.

编辑1:

在我的用例中lines可以有超过一百万行.如果split要将内存使用量增加2倍,那对我来说肯定是个问题.但是,如果Ruby VM足够聪明,可以确定lines在调用split并释放内存之后不会使用它,那么这可能不是问题.另一方面,就地reverse!方法在理论上似乎更有效,因为它可以在不做任何副本的情况下完成lines.

ruby string

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

在派生特征的实现块中实现继承的函数

我有以下代码:

trait A {
    fn foo(&self);
}

trait B {
    fn bar(&self);
}

trait C : A + B {
}

struct S;

impl A for S {
    fn foo(&self) {
        println!("In S->foo()");
    }
}

impl B for S {
    fn bar(&self) {
        println!("In S->bar()");
    }
}

impl C for S {
}

fn main() {
    let s = S;
    s.foo();
    s.bar();
}
Run Code Online (Sandbox Code Playgroud)

(Rust操场链接:http://is.gd/pde2LE)

是否有可能只实现CS贯彻foobar功能在实现块?我尝试了以下但它失败了:

trait A { …
Run Code Online (Sandbox Code Playgroud)

rust

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

标签 统计

rust ×3

android ×1

android-mediaplayer ×1

c ×1

c++ ×1

core ×1

gdb ×1

mongodb ×1

ruby ×1

segmentation-fault ×1

string ×1