小编anu*_*ula的帖子

指定可变长度静态切片的方法

假设我有一个具有以下签名的函数:

fn validate(samples: &[(&str, &[Token])])
Run Code Online (Sandbox Code Playgroud)

Token自定义枚举在哪里。我希望能够写一些类似的东西:

    let samples = vec![
        ("a string", &[Token::PLUS, Token::MINUS, Token::PLUS]),
        ("another string", &[Token::MUL]),
    ];
    validate(&samples);
Run Code Online (Sandbox Code Playgroud)

但是这样的代码会产生类型不匹配的编译错误:

error: mismatched types:
expected `&[(&str, &[Token])]`,
   found `&collections::vec::Vec<(&str, &[Token; 3])>`
Run Code Online (Sandbox Code Playgroud)

是否有可能以某种方式将具有静态长度()的版本转换&[Token; 3]为静态切片(&[Token])?换句话说,我希望能够以与我指定类似的方式指定静态切片&str,作为某种“切片文字”。

或者我做的完全错误?

编辑:简而言之,我想找到一种语法来创建具有静态生命周期(或至少与向量samples的生命周期一样长的生命周期)的数组,并返回它的切片。

类似于字符串的工作方式,只需输入“a string”即可给我 type 的引用&'static str

编辑2:@Pablo 的答案为我的特定问题提供了很好的解决方案,尽管这并不完全是我一开始的意思。

我想我所想到的确切的事情可能是不可能的,所以我现在只会接受这个,除非出现更符合我最初想法的东西。

type-mismatch rust

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

返回每个第N个值的迭代器

我有一个迭代器iter; 是否可以将其转换为迭代每个第N个元素的迭代器?有点像iter.skip_each(n - 1)

rust

3
推荐指数
2
解决办法
1301
查看次数

Google GCM 服务器返回 404 错误

我想通过 PHP 从我的服务器向手机发送消息。这是我的代码:

    $apiKey = "AIxxxxxxxxxxxxxxxxxxxx";

    $registrationIDs = array( $c2dmId );

    $url = "https://android.googleapis.com/gcm/send";

    $headers = array( 
                        'Authorization: key='.$apiKey,
                        'Content-Type: application/json'
                    );

    $fields = array(
                    'collapse_key'      => $collapseKey,
                    'data'              => array( 
                        "type"      => $msgType,
                        "extra"     => $msgExtra,
                        "uuid"      => $uuid,
                        "user_id"   => $userId),
                    'registration_ids'  => $registrationIDs,
                    );

    print (json_encode($fields));
    echo "<br/>";

    $ch = curl_init();

    curl_setopt( $ch, CURLOPT_URL, $url );

    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

    curl_setopt( $ch, CURLOPT_POST, true );
    curl_setopt( $ch, CURLOPT_POSTFIELDS, …
Run Code Online (Sandbox Code Playgroud)

php android google-cloud-messaging

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