rustdoc: Refactor some of the map code
This commit is contained in:
@@ -79,6 +79,23 @@ fn mk_fold<T:copy>(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn default_any_fold<T:send>(ctxt: T) -> fold<T> {
|
||||||
|
mk_fold(
|
||||||
|
ctxt,
|
||||||
|
{|f, d| default_seq_fold_crate(f, d)},
|
||||||
|
{|f, d| default_seq_fold_item(f, d)},
|
||||||
|
{|f, d| default_any_fold_mod(f, d)},
|
||||||
|
{|f, d| default_seq_fold_nmod(f, d)},
|
||||||
|
{|f, d| default_seq_fold_fn(f, d)},
|
||||||
|
{|f, d| default_seq_fold_const(f, d)},
|
||||||
|
{|f, d| default_seq_fold_enum(f, d)},
|
||||||
|
{|f, d| default_seq_fold_res(f, d)},
|
||||||
|
{|f, d| default_seq_fold_iface(f, d)},
|
||||||
|
{|f, d| default_seq_fold_impl(f, d)},
|
||||||
|
{|f, d| default_seq_fold_type(f, d)}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
fn default_seq_fold<T:copy>(ctxt: T) -> fold<T> {
|
fn default_seq_fold<T:copy>(ctxt: T) -> fold<T> {
|
||||||
mk_fold(
|
mk_fold(
|
||||||
ctxt,
|
ctxt,
|
||||||
@@ -113,12 +130,6 @@ fn default_par_fold<T:send>(ctxt: T) -> fold<T> {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Just a convenient wrapper to convert back and forth between
|
|
||||||
// parallel and sequential folds for perf testing
|
|
||||||
fn default_any_fold<T:send>(ctxt: T) -> fold<T> {
|
|
||||||
default_seq_fold(ctxt)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn default_seq_fold_crate<T>(
|
fn default_seq_fold_crate<T>(
|
||||||
fold: fold<T>,
|
fold: fold<T>,
|
||||||
doc: doc::cratedoc
|
doc: doc::cratedoc
|
||||||
@@ -135,27 +146,27 @@ fn default_seq_fold_item<T>(
|
|||||||
doc
|
doc
|
||||||
}
|
}
|
||||||
|
|
||||||
fn default_seq_fold_mod<T>(
|
fn default_any_fold_mod<T:send>(
|
||||||
fold: fold<T>,
|
fold: fold<T>,
|
||||||
doc: doc::moddoc
|
doc: doc::moddoc
|
||||||
) -> doc::moddoc {
|
) -> doc::moddoc {
|
||||||
{
|
{
|
||||||
item: fold.fold_item(fold, doc.item),
|
item: fold.fold_item(fold, doc.item),
|
||||||
items: vec::map(doc.items) {|itemtag|
|
items: util::anymap(doc.items) {|itemtag|
|
||||||
fold_itemtag(fold, itemtag)
|
fold_itemtag(fold, itemtag)
|
||||||
}
|
}
|
||||||
with doc
|
with doc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn default_seq_fold_nmod<T>(
|
fn default_seq_fold_mod<T>(
|
||||||
fold: fold<T>,
|
fold: fold<T>,
|
||||||
doc: doc::nmoddoc
|
doc: doc::moddoc
|
||||||
) -> doc::nmoddoc {
|
) -> doc::moddoc {
|
||||||
{
|
{
|
||||||
item: fold.fold_item(fold, doc.item),
|
item: fold.fold_item(fold, doc.item),
|
||||||
fns: vec::map(doc.fns) {|fndoc|
|
items: util::seqmap(doc.items) {|itemtag|
|
||||||
fold.fold_fn(fold, fndoc)
|
fold_itemtag(fold, itemtag)
|
||||||
}
|
}
|
||||||
with doc
|
with doc
|
||||||
}
|
}
|
||||||
@@ -174,11 +185,17 @@ fn default_par_fold_mod<T:send>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn default_any_fold_mod<T:send>(
|
fn default_seq_fold_nmod<T>(
|
||||||
fold: fold<T>,
|
fold: fold<T>,
|
||||||
doc: doc::moddoc
|
doc: doc::nmoddoc
|
||||||
) -> doc::moddoc {
|
) -> doc::nmoddoc {
|
||||||
default_seq_fold_mod(fold, doc)
|
{
|
||||||
|
item: fold.fold_item(fold, doc.item),
|
||||||
|
fns: vec::map(doc.fns) {|fndoc|
|
||||||
|
fold.fold_fn(fold, fndoc)
|
||||||
|
}
|
||||||
|
with doc
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fold_itemtag<T>(fold: fold<T>, doc: doc::itemtag) -> doc::itemtag {
|
fn fold_itemtag<T>(fold: fold<T>, doc: doc::itemtag) -> doc::itemtag {
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
export parmap;
|
export anymap, seqmap, parmap;
|
||||||
|
|
||||||
|
fn anymap<T:send, U:send>(v: [T], f: fn(T) -> U) -> [U] {
|
||||||
|
seqmap(v, f)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn seqmap<T, U>(v: [T], f: fn(T) -> U) -> [U] {
|
||||||
|
vec::map(v, f)
|
||||||
|
}
|
||||||
|
|
||||||
fn parmap<T:send, U:send>(v: [T], f: fn~(T) -> U) -> [U] unsafe {
|
fn parmap<T:send, U:send>(v: [T], f: fn~(T) -> U) -> [U] unsafe {
|
||||||
let futures = vec::map(v) {|elt|
|
let futures = vec::map(v) {|elt|
|
||||||
|
|||||||
Reference in New Issue
Block a user