小编dem*_*orz的帖子

从已捕获的lambda中反复移动变量

我有以下测试代码:

#include <iostream>
#include <string>

void printValue(std::string&& val)
{
    std::cout << "Got value: " << val << "\n";
}

int main() {

    std::string testValue = "Test Value";

    auto lambda = [testValue = std::move(testValue)]() mutable
    {
        printValue(std::move(testValue));
    };

    lambda();
    lambda();
    lambda();
}
Run Code Online (Sandbox Code Playgroud)

我得到了结果:

Got value: Test Value
Got value: Test Value
Got value: Test Value
Run Code Online (Sandbox Code Playgroud)

它是一个有效的假设,从已经移动捕获的lambda中移动一个对象将始终具有它被移动到lambda中的初始状态,或者这只是一个对象处于"有效但未指定状态"的工件?

c++ lambda move-semantics c++11 c++14

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

如何序列化或反序列化Serde中的Arc <T>?

我有一个包含自己类型的子的结构.这些孩子被包裹在Arcs中,我在调用serde_json::to_string它时遇到问题.我的结构是:

#[derive(Serialize, Deserialize)]
pub struct Category {
    pub id: i32,
    pub name: String,
    pub parent_id: i32,
    pub children: Vec<Arc<Category>>,
}
Run Code Online (Sandbox Code Playgroud)

这会产生错误the trait 'serde::Serialize' is not implemented for 'std::sync::Arc<db::queries::categories::Category>'我尝试了一些不同的方法来使序列化工作,例如:

#[serde(serialize_with = "arc_category_vec")]
pub children: Vec<Arc<Category>>
Run Code Online (Sandbox Code Playgroud)
fn arc_category_vec<S>(value: &Vec<Arc<Category>>, serializer: S) -> Result<S::Ok, S::Error>
where
    S: Serializer,
{
    let mut seq = serializer.serialize_seq(Some(value.len()))?;
    for e in value {
        seq.serialize_element(e.as_ref())?;
    }
    seq.end()
}
Run Code Online (Sandbox Code Playgroud)

这没有帮助,因为我得到相同的错误.我也尝试过:

impl Serialize for Arc<Category> {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where …
Run Code Online (Sandbox Code Playgroud)

rust serde

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

三星互联网浏览器忽略Ajax请求上的set-cookie

登录后,我设置了一些cookie,它们可以在FF,Chrome,Edge等环境中使用。但是由于某些原因,Samsung Internet Browser似乎忽略了我的cookie。

我已经启用了cookie,并且它正在接受来自其他站点的cookie,但是我不知道为什么它不接受它们。我从服务器获取了此捕获:

HTTP/1.1 200 OK
Content-Type: application/json
Set-Cookie: token=e1c137y8WEZItXVWExXBWRyQl9mxgxEvEMG++F6pzwart%2FAO0lTSA3tL48oeHclD%2FLQMdXWhgXvefpGR3QGMqwMe8cg%3D; HttpOnly; SameSite=Strict; Path=/; Expires=Wed, 08 May 2019 07:03:43 GMT
Set-Cookie: email=%2FwGLVu+6Yv5fYpSyZwRE8TIi0MlZZ6WaN+OaKusCF6pEyQjomquJmWwqSgrcHg2dcBeMBU%2Foeg%3D%3D; HttpOnly; SameSite=Strict; Path=/; Expires=Wed, 08 May 2019 07:03:43 GMT
Set-Cookie: testing=TESTETSETESET; HttpOnly
Server: Rocket
Content-Length: 56
Date: Wed, 01 May 2019 07:03:43 GMT

{ ... }
Run Code Online (Sandbox Code Playgroud)

我尝试过更改HttpOnly,SameSite,安全和域设置,但到目前为止没有任何更改。

有任何想法吗?

三星互联网版本9.2.00.70

编辑:

似乎是因为从Ajax查询中设置了cookie。我将其更改为来自常规形式POST的响应,并且似乎已经奏效。更多挖掘...

cookies ajax http samsung-browser

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

标签 统计

ajax ×1

c++ ×1

c++11 ×1

c++14 ×1

cookies ×1

http ×1

lambda ×1

move-semantics ×1

rust ×1

samsung-browser ×1

serde ×1