小编upd*_*liu的帖子

将枚举变体用作函数的奇怪语法是什么?

下面是mod文档给出的例子syn::parse

enum Item {
    Struct(ItemStruct),
    Enum(ItemEnum),
}

struct ItemStruct {
    struct_token: Token![struct],
    ident: Ident,
    brace_token: token::Brace,
    fields: Punctuated<Field, Token![,]>,
}

impl Parse for Item {
    fn parse(input: ParseStream) -> Result<Self> {
        let lookahead = input.lookahead1();
        if lookahead.peek(Token![struct]) {
            input.parse().map(Item::Struct)    // <-- here
        } else if lookahead.peek(Token![enum]) {
            input.parse().map(Item::Enum)      // <-- and here
        } else {
            Err(lookahead.error())
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

input.parse().map(Item::Struct)有效的普通 Rust 语法(看起来不是Item::Struct函数),还是库的一种特殊语法proc_macro?如果是后者,是否有proc_macro具体语法规则的文档?

rust rust-proc-macros

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

是否可以在 `#![no_std]` 模式下解除恐慌?

是否可以在#![no_std]模式下放松恐慌,例如使用定制的#[panic_handler]

stack-unwinding panic rust

6
推荐指数
0
解决办法
821
查看次数

ip :: tcp :: socket.close()线程安全吗?

如果async_read套接字上有a ,则应该有一个内部线程来io_service检查套接字的状态.socket.close()从另一个线程调用是否安全(也许当它运行一个单独的处理程序时io_service)?

我的意思是即使我可以保证我的处理程序不会同时使用asio socket,它是否足够好(考虑内部线程时io_service)?

更新: 我正在使用async_read堆栈协程.与本文档底部的示例非常相似,只是我的有一个额外的函数层调用yield_context.如果我在该示例中调度socket.close()操作,my_strand整个事情是否安全?换句话说,所有相关的操作(堆栈协程的async_read中间async_read_some,隐式处理程序socket.close())是否会通过单个链运行my_strand

boost-asio c++11

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

如果还有异步操作等待basic_waitable_timer被破坏怎么办?

如果还有异步操作等待basic_waitable_timer被破坏怎么办?行为记录在任何地方吗?

c++ boost boost-asio

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

如何在接口类型中列出方法名称?

例如,

type FooService interface {
    Foo1(x int) int
    Foo2(x string) string
}
Run Code Online (Sandbox Code Playgroud)

我试图做的是["Foo1", "Foo2"]使用运行时反射获取列表。

reflection go

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

如何压制python的启动信息?

当我输入"python"并返回shell时,会出现以下行:

Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Run Code Online (Sandbox Code Playgroud)

如何压抑这些线?

python

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

矢量的容量何时会减少?

(这个问题不是关于shrink_to_fit技巧(使用swap()shrink_to_fit()在C++ 11中).)

如果我只能通过使用一个向量insert(),erase(),push_back(),pop_back(),clear(),当容量不够,就会增加和再分配对将发生载体.但在什么情况下容量会减少?容量减少是否必然导致重新分配?

c++ stl

4
推荐指数
2
解决办法
2090
查看次数

如何分别为整数和浮点类型专门设计模板函数?

考虑功能template<typename T> void Fun(T t);.我怎样才能分别为整数和浮点类型实现它的不同实现?

我猜积木是std::enable_if,std::is_integral,std::is_floating_point.但我不能以优雅的方式把它们放在一起:-(.

PS我有C++ 11可用.

c++ templates c++11

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

如果调用asio :: strand的析构函数时,该链上仍有一些就绪/未准备好的处理程序?

如果在asio::strand调用a的析构函数时,该链上还有一些准备好/未准备好的处理程序怎么办?

根据文件:

通过链发布的尚未调用的处理程序仍将以满足非并发保证的方式进行调度.

这是否意味着它仍将调用所有处理程序,包括等待未准备好的处理程序准备好,就像它没有被销毁一样(可能除了不接受新的处理程序)?

或者我可能在概念上错误地认为"unready handler"---异步操作在完成之前不会在其上发布其处理程序?如果调用目标链的析构函数,这个异步操作是否会意识到这一点?

boost boost-asio

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

如何在其链的上下文中恢复执行堆栈协程?

using Yield = asio::yield_context;
using boost::system::error_code;
int Func(Yield yield) {
  error_code ec;
  asio::detail::async_result_init<Yield, void(error_code, int)> init(yield[ec]);
  std::thread th(std::bind(Process, init.handler));
  int result = init.result.get();  // <--- yield at here
  return result;
}
Run Code Online (Sandbox Code Playgroud)

如何实现,Process以便FuncFunc最初产生的链的上下文中恢复?

c++ boost boost-asio c++11

4
推荐指数
2
解决办法
1851
查看次数