hadean-std 0.1.6

Hadean stdlib. Requires Hadean Rust.
Documentation
use std::{cmp,env,mem,ops,iter,marker,hash};
use std::collections::HashMap;
use hadean::{Sender,Receiver,Connection,Process,ChannelType,Channel,pid,spawn,ProcessSendable};
use graph::{Graph,GraphInterpreter};

impl<V,E> Graph<V,E> where V: ProcessSendable, E: ProcessSendable {
	/// Run [pagerank](https://en.wikipedia.org/wiki/PageRank) on the graph.
	pub fn pagerank(self, damping: f64, iterations: usize) -> Graph<(V,f64),E> where V: ProcessSendable, (V,f64): ProcessSendable, E: ProcessSendable {
		let num_vertices = self.num_vertices();
		let initial = 1.0/num_vertices as f64;
		let mut graph: Graph<(V,f64),E> = self.map(move |vertex| (vertex,initial), move |edge| edge);
		for _ in 0..iterations {
			graph.step(
				move |(_vertex,score), edges| {
					let out = score / edges.len() as f64;
					for mut edge in edges {
						edge.send(out);
					}
				}, move |(vertex,score), messages| {
					let mut sum = 0f64;
					for val in messages {
						sum += val;
					}
					(vertex,(1.0-damping) / num_vertices as f64 + damping * sum)
				}
			)
		}
		graph
	}
}