Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
12144098
R
Rust
项目概览
int
/
Rust
12 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
12144098
编写于
11月 16, 2014
作者:
J
Jakub Bukaj
浏览文件
操作
浏览文件
下载
差异文件
rollup merge of #18948: barosl/doc-encodable-fix
上级
b45dbfbd
94169353
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
40 addition
and
31 deletion
+40
-31
src/libsyntax/ext/deriving/encodable.rs
src/libsyntax/ext/deriving/encodable.rs
+40
-31
未找到文件。
src/libsyntax/ext/deriving/encodable.rs
浏览文件 @
12144098
...
...
@@ -22,19 +22,23 @@
//! would generate two implementations like:
//!
//! ```ignore
//! impl<S:serialize::Encoder> Encodable<S> for Node {
//! fn encode(&self, s: &S) {
//! s.emit_struct("Node", 1, || {
//! s.emit_field("id", 0, || s.emit_uint(self.id))
//! impl<S: Encoder<E>, E> Encodable<S, E> for Node {
//! fn encode(&self, s: &mut S) -> Result<(), E> {
//! s.emit_struct("Node", 1, |this| {
//! this.emit_struct_field("id", 0, |this| {
//! Encodable::encode(&self.id, this)
//! /* this.emit_uint(self.id) can also be used */
//! })
//! })
//! }
//! }
//!
//! impl<D:Decoder> Decodable for node_id {
//! fn decode(d: &D) -> Node {
//! d.read_struct("Node", 1, || {
//! Node {
//! id: d.read_field("x".to_string(), 0, || decode(d))
//! impl<D: Decoder<E>, E> Decodable<D, E> for Node {
//! fn decode(d: &mut D) -> Result<Node, E> {
//! d.read_struct("Node", 1, |this| {
//! match this.read_struct_field("id", 0, |this| Decodable::decode(this)) {
//! Ok(id) => Ok(Node { id: id }),
//! Err(e) => Err(e),
//! }
//! })
//! }
...
...
@@ -46,37 +50,42 @@
//!
//! ```ignore
//! #[deriving(Encodable, Decodable)]
//! struct
s
panned<T> { node: T, span: Span }
//! struct
S
panned<T> { node: T, span: Span }
//! ```
//!
//! would yield functions like:
//!
//! ```ignore
//! impl<
//! S: Encoder,
//! T: Encodable<S>
//! > spanned<T>: Encodable<S> {
//! fn encode<S:Encoder>(s: &S) {
//! s.emit_rec(|| {
//! s.emit_field("node", 0, || self.node.encode(s));
//! s.emit_field("span", 1, || self.span.encode(s));
//! })
//! }
//! impl<
//! S: Encoder<E>,
//! E,
//! T: Encodable<S, E>
//! > Encodable<S, E> for Spanned<T> {
//! fn encode(&self, s: &mut S) -> Result<(), E> {
//! s.emit_struct("Spanned", 2, |this| {
//! this.emit_struct_field("node", 0, |this| self.node.encode(this))
//! .ok().unwrap();
//! this.emit_struct_field("span", 1, |this| self.span.encode(this))
//! })
//! }
//! }
//!
//! impl<
//! D: Decoder,
//! T: Decodable<D>
//! > spanned<T>: Decodable<D> {
//! fn decode(d: &D) -> spanned<T> {
//! d.read_rec(|| {
//! {
//! node: d.read_field("node".to_string(), 0, || decode(d)),
//! span: d.read_field("span".to_string(), 1, || decode(d)),
//! }
//! impl<
//! D: Decoder<E>,
//! E,
//! T: Decodable<D, E>
//! > Decodable<D, E> for Spanned<T> {
//! fn decode(d: &mut D) -> Result<Spanned<T>, E> {
//! d.read_struct("Spanned", 2, |this| {
//! Ok(Spanned {
//! node: this.read_struct_field("node", 0, |this| Decodable::decode(this))
//! .ok().unwrap(),
//! span: this.read_struct_field("span", 1, |this| Decodable::decode(this))
//! .ok().unwrap(),
//! })
//! }
//! }
)
//! }
//! }
//! ```
use
ast
::{
MetaItem
,
Item
,
Expr
,
ExprRet
,
MutMutable
,
LitNil
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录