@@ -413,8 +413,8 @@ impl<'a> Id<'a> {
413413 {
414414 let mut chars = name. chars ( ) ;
415415 match chars. next ( ) {
416- Some ( c) if is_letter_or_underscore ( c) => { ; } ,
417- _ => return Err ( ( ) )
416+ Some ( c) if is_letter_or_underscore ( c) => { }
417+ _ => return Err ( ( ) ) ,
418418 }
419419 if !chars. all ( is_constituent) {
420420 return Err ( ( ) )
@@ -505,24 +505,28 @@ pub fn escape_html(s: &str) -> String {
505505}
506506
507507impl < ' a > LabelText < ' a > {
508- pub fn label < S : IntoCow < ' a , str > > ( s : S ) -> LabelText < ' a > {
508+ pub fn label < S : IntoCow < ' a , str > > ( s : S ) -> LabelText < ' a > {
509509 LabelStr ( s. into_cow ( ) )
510510 }
511511
512- pub fn escaped < S : IntoCow < ' a , str > > ( s : S ) -> LabelText < ' a > {
512+ pub fn escaped < S : IntoCow < ' a , str > > ( s : S ) -> LabelText < ' a > {
513513 EscStr ( s. into_cow ( ) )
514514 }
515515
516- pub fn html < S : IntoCow < ' a , str > > ( s : S ) -> LabelText < ' a > {
516+ pub fn html < S : IntoCow < ' a , str > > ( s : S ) -> LabelText < ' a > {
517517 HtmlStr ( s. into_cow ( ) )
518518 }
519519
520- fn escape_char < F > ( c : char , mut f : F ) where F : FnMut ( char ) {
520+ fn escape_char < F > ( c : char , mut f : F )
521+ where F : FnMut ( char )
522+ {
521523 match c {
522524 // not escaping \\, since Graphviz escString needs to
523525 // interpret backslashes; see EscStr above.
524526 '\\' => f ( c) ,
525- _ => for c in c. escape_default ( ) { f ( c) }
527+ _ => for c in c. escape_default ( ) {
528+ f ( c)
529+ } ,
526530 }
527531 }
528532 fn escape_str ( s : & str ) -> String {
@@ -613,29 +617,42 @@ pub enum RenderOption {
613617}
614618
615619/// Returns vec holding all the default render options.
616- pub fn default_options ( ) -> Vec < RenderOption > { vec ! [ ] }
620+ pub fn default_options ( ) -> Vec < RenderOption > {
621+ vec ! [ ]
622+ }
617623
618624/// Renders directed graph `g` into the writer `w` in DOT syntax.
619625/// (Simple wrapper around `render_opts` that passes a default set of options.)
620- pub fn render < ' a , N : Clone +' a , E : Clone +' a , G : Labeller < ' a , N , E > +GraphWalk < ' a , N , E > , W : Write > (
621- g : & ' a G ,
622- w : & mut W ) -> io:: Result < ( ) > {
626+ pub fn render < ' a ,
627+ N : Clone + ' a ,
628+ E : Clone + ' a ,
629+ G : Labeller < ' a , N , E > + GraphWalk < ' a , N , E > ,
630+ W : Write >
631+ ( g : & ' a G ,
632+ w : & mut W )
633+ -> io:: Result < ( ) > {
623634 render_opts ( g, w, & [ ] )
624635}
625636
626637/// Renders directed graph `g` into the writer `w` in DOT syntax.
627638/// (Main entry point for the library.)
628- pub fn render_opts < ' a , N : Clone +' a , E : Clone +' a , G : Labeller < ' a , N , E > +GraphWalk < ' a , N , E > , W : Write > (
629- g : & ' a G ,
630- w : & mut W ,
631- options : & [ RenderOption ] ) -> io:: Result < ( ) >
632- {
633- fn writeln < W : Write > ( w : & mut W , arg : & [ & str ] ) -> io:: Result < ( ) > {
634- for & s in arg { try!( w. write_all ( s. as_bytes ( ) ) ) ; }
639+ pub fn render_opts < ' a ,
640+ N : Clone + ' a ,
641+ E : Clone + ' a ,
642+ G : Labeller < ' a , N , E > + GraphWalk < ' a , N , E > ,
643+ W : Write >
644+ ( g : & ' a G ,
645+ w : & mut W ,
646+ options : & [ RenderOption ] )
647+ -> io:: Result < ( ) > {
648+ fn writeln < W : Write > ( w : & mut W , arg : & [ & str ] ) -> io:: Result < ( ) > {
649+ for & s in arg {
650+ try!( w. write_all ( s. as_bytes ( ) ) ) ;
651+ }
635652 write ! ( w, "\n " )
636653 }
637654
638- fn indent < W : Write > ( w : & mut W ) -> io:: Result < ( ) > {
655+ fn indent < W : Write > ( w : & mut W ) -> io:: Result < ( ) > {
639656 w. write_all ( b" " )
640657 }
641658
@@ -748,7 +765,7 @@ mod tests {
748765 // A simple wrapper around LabelledGraph that forces the labels to
749766 // be emitted as EscStr.
750767 struct LabelledGraphWithEscStrs {
751- graph : LabelledGraph
768+ graph : LabelledGraph ,
752769 }
753770
754771 enum NodeLabels < L > {
@@ -762,13 +779,9 @@ mod tests {
762779 impl NodeLabels < & ' static str > {
763780 fn to_opt_strs ( self ) -> Vec < Option < & ' static str > > {
764781 match self {
765- UnlabelledNodes ( len)
766- => vec ! [ None ; len] ,
767- AllNodesLabelled ( lbls)
768- => lbls. into_iter ( ) . map (
769- |l|Some ( l) ) . collect ( ) ,
770- SomeNodesLabelled ( lbls)
771- => lbls. into_iter ( ) . collect ( ) ,
782+ UnlabelledNodes ( len) => vec ! [ None ; len] ,
783+ AllNodesLabelled ( lbls) => lbls. into_iter ( ) . map ( |l| Some ( l) ) . collect ( ) ,
784+ SomeNodesLabelled ( lbls) => lbls. into_iter ( ) . collect ( ) ,
772785 }
773786 }
774787
@@ -785,7 +798,8 @@ mod tests {
785798 fn new ( name : & ' static str ,
786799 node_labels : Trivial ,
787800 edges : Vec < Edge > ,
788- node_styles : Option < Vec < Style > > ) -> LabelledGraph {
801+ node_styles : Option < Vec < Style > > )
802+ -> LabelledGraph {
789803 let count = node_labels. len ( ) ;
790804 LabelledGraph {
791805 name : name,
@@ -794,21 +808,17 @@ mod tests {
794808 node_styles : match node_styles {
795809 Some ( nodes) => nodes,
796810 None => vec ! [ Style :: None ; count] ,
797- }
811+ } ,
798812 }
799813 }
800814 }
801815
802816 impl LabelledGraphWithEscStrs {
803817 fn new ( name : & ' static str ,
804818 node_labels : Trivial ,
805- edges : Vec < Edge > ) -> LabelledGraphWithEscStrs {
806- LabelledGraphWithEscStrs {
807- graph : LabelledGraph :: new ( name,
808- node_labels,
809- edges,
810- None )
811- }
819+ edges : Vec < Edge > )
820+ -> LabelledGraphWithEscStrs {
821+ LabelledGraphWithEscStrs { graph : LabelledGraph :: new ( name, node_labels, edges, None ) }
812822 }
813823 }
814824
@@ -826,61 +836,65 @@ mod tests {
826836 fn node_label ( & ' a self , n : & Node ) -> LabelText < ' a > {
827837 match self . node_labels [ * n] {
828838 Some ( ref l) => LabelStr ( l. into_cow ( ) ) ,
829- None => LabelStr ( id_name ( n) . name ( ) ) ,
839+ None => LabelStr ( id_name ( n) . name ( ) ) ,
830840 }
831841 }
832- fn edge_label ( & ' a self , e : & & ' a Edge ) -> LabelText < ' a > {
842+ fn edge_label ( & ' a self , e : & & ' a Edge ) -> LabelText < ' a > {
833843 LabelStr ( e. label . into_cow ( ) )
834844 }
835845 fn node_style ( & ' a self , n : & Node ) -> Style {
836846 self . node_styles [ * n]
837847 }
838- fn edge_style ( & ' a self , e : & & ' a Edge ) -> Style {
848+ fn edge_style ( & ' a self , e : & & ' a Edge ) -> Style {
839849 e. style
840850 }
841851 }
842852
843853 impl < ' a > Labeller < ' a , Node , & ' a Edge > for LabelledGraphWithEscStrs {
844- fn graph_id ( & ' a self ) -> Id < ' a > { self . graph . graph_id ( ) }
845- fn node_id ( & ' a self , n : & Node ) -> Id < ' a > { self . graph . node_id ( n) }
854+ fn graph_id ( & ' a self ) -> Id < ' a > {
855+ self . graph . graph_id ( )
856+ }
857+ fn node_id ( & ' a self , n : & Node ) -> Id < ' a > {
858+ self . graph . node_id ( n)
859+ }
846860 fn node_label ( & ' a self , n : & Node ) -> LabelText < ' a > {
847861 match self . graph . node_label ( n) {
848862 LabelStr ( s) | EscStr ( s) | HtmlStr ( s) => EscStr ( s) ,
849863 }
850864 }
851- fn edge_label ( & ' a self , e : & & ' a Edge ) -> LabelText < ' a > {
865+ fn edge_label ( & ' a self , e : & & ' a Edge ) -> LabelText < ' a > {
852866 match self . graph . edge_label ( e) {
853867 LabelStr ( s) | EscStr ( s) | HtmlStr ( s) => EscStr ( s) ,
854868 }
855869 }
856870 }
857871
858872 impl < ' a > GraphWalk < ' a , Node , & ' a Edge > for LabelledGraph {
859- fn nodes ( & ' a self ) -> Nodes < ' a , Node > {
873+ fn nodes ( & ' a self ) -> Nodes < ' a , Node > {
860874 ( 0 ..self . node_labels . len ( ) ) . collect ( )
861875 }
862- fn edges ( & ' a self ) -> Edges < ' a , & ' a Edge > {
876+ fn edges ( & ' a self ) -> Edges < ' a , & ' a Edge > {
863877 self . edges . iter ( ) . collect ( )
864878 }
865- fn source ( & ' a self , edge : & & ' a Edge ) -> Node {
879+ fn source ( & ' a self , edge : & & ' a Edge ) -> Node {
866880 edge. from
867881 }
868- fn target ( & ' a self , edge : & & ' a Edge ) -> Node {
882+ fn target ( & ' a self , edge : & & ' a Edge ) -> Node {
869883 edge. to
870884 }
871885 }
872886
873887 impl < ' a > GraphWalk < ' a , Node , & ' a Edge > for LabelledGraphWithEscStrs {
874- fn nodes ( & ' a self ) -> Nodes < ' a , Node > {
888+ fn nodes ( & ' a self ) -> Nodes < ' a , Node > {
875889 self . graph . nodes ( )
876890 }
877- fn edges ( & ' a self ) -> Edges < ' a , & ' a Edge > {
891+ fn edges ( & ' a self ) -> Edges < ' a , & ' a Edge > {
878892 self . graph . edges ( )
879893 }
880- fn source ( & ' a self , edge : & & ' a Edge ) -> Node {
894+ fn source ( & ' a self , edge : & & ' a Edge ) -> Node {
881895 edge. from
882896 }
883- fn target ( & ' a self , edge : & & ' a Edge ) -> Node {
897+ fn target ( & ' a self , edge : & & ' a Edge ) -> Node {
884898 edge. to
885899 }
886900 }
@@ -899,7 +913,7 @@ mod tests {
899913
900914 #[ test]
901915 fn empty_graph ( ) {
902- let labels : Trivial = UnlabelledNodes ( 0 ) ;
916+ let labels: Trivial = UnlabelledNodes ( 0 ) ;
903917 let r = test_input ( LabelledGraph :: new ( "empty_graph" , labels, vec ! [ ] , None ) ) ;
904918 assert_eq ! ( r. unwrap( ) ,
905919r#"digraph empty_graph {
@@ -909,7 +923,7 @@ r#"digraph empty_graph {
909923
910924 #[ test]
911925 fn single_node ( ) {
912- let labels : Trivial = UnlabelledNodes ( 1 ) ;
926+ let labels: Trivial = UnlabelledNodes ( 1 ) ;
913927 let r = test_input ( LabelledGraph :: new ( "single_node" , labels, vec ! [ ] , None ) ) ;
914928 assert_eq ! ( r. unwrap( ) ,
915929r#"digraph single_node {
@@ -920,7 +934,7 @@ r#"digraph single_node {
920934
921935 #[ test]
922936 fn single_node_with_style ( ) {
923- let labels : Trivial = UnlabelledNodes ( 1 ) ;
937+ let labels: Trivial = UnlabelledNodes ( 1 ) ;
924938 let styles = Some ( vec ! [ Style :: Dashed ] ) ;
925939 let r = test_input ( LabelledGraph :: new ( "single_node" , labels, vec ! [ ] , styles) ) ;
926940 assert_eq ! ( r. unwrap( ) ,
@@ -932,9 +946,11 @@ r#"digraph single_node {
932946
933947 #[ test]
934948 fn single_edge ( ) {
935- let labels : Trivial = UnlabelledNodes ( 2 ) ;
936- let result = test_input ( LabelledGraph :: new ( "single_edge" , labels,
937- vec ! [ edge( 0 , 1 , "E" , Style :: None ) ] , None ) ) ;
949+ let labels: Trivial = UnlabelledNodes ( 2 ) ;
950+ let result = test_input ( LabelledGraph :: new ( "single_edge" ,
951+ labels,
952+ vec ! [ edge( 0 , 1 , "E" , Style :: None ) ] ,
953+ None ) ) ;
938954 assert_eq ! ( result. unwrap( ) ,
939955r#"digraph single_edge {
940956 N0[label="N0"];
@@ -946,9 +962,11 @@ r#"digraph single_edge {
946962
947963 #[ test]
948964 fn single_edge_with_style ( ) {
949- let labels : Trivial = UnlabelledNodes ( 2 ) ;
950- let result = test_input ( LabelledGraph :: new ( "single_edge" , labels,
951- vec ! [ edge( 0 , 1 , "E" , Style :: Bold ) ] , None ) ) ;
965+ let labels: Trivial = UnlabelledNodes ( 2 ) ;
966+ let result = test_input ( LabelledGraph :: new ( "single_edge" ,
967+ labels,
968+ vec ! [ edge( 0 , 1 , "E" , Style :: Bold ) ] ,
969+ None ) ) ;
952970 assert_eq ! ( result. unwrap( ) ,
953971r#"digraph single_edge {
954972 N0[label="N0"];
@@ -960,10 +978,12 @@ r#"digraph single_edge {
960978
961979 #[ test]
962980 fn test_some_labelled ( ) {
963- let labels : Trivial = SomeNodesLabelled ( vec ! [ Some ( "A" ) , None ] ) ;
981+ let labels: Trivial = SomeNodesLabelled ( vec ! [ Some ( "A" ) , None ] ) ;
964982 let styles = Some ( vec ! [ Style :: None , Style :: Dotted ] ) ;
965- let result = test_input ( LabelledGraph :: new ( "test_some_labelled" , labels,
966- vec ! [ edge( 0 , 1 , "A-1" , Style :: None ) ] , styles) ) ;
983+ let result = test_input ( LabelledGraph :: new ( "test_some_labelled" ,
984+ labels,
985+ vec ! [ edge( 0 , 1 , "A-1" , Style :: None ) ] ,
986+ styles) ) ;
967987 assert_eq ! ( result. unwrap( ) ,
968988r#"digraph test_some_labelled {
969989 N0[label="A"];
@@ -975,9 +995,11 @@ r#"digraph test_some_labelled {
975995
976996 #[ test]
977997 fn single_cyclic_node ( ) {
978- let labels : Trivial = UnlabelledNodes ( 1 ) ;
979- let r = test_input ( LabelledGraph :: new ( "single_cyclic_node" , labels,
980- vec ! [ edge( 0 , 0 , "E" , Style :: None ) ] , None ) ) ;
998+ let labels: Trivial = UnlabelledNodes ( 1 ) ;
999+ let r = test_input ( LabelledGraph :: new ( "single_cyclic_node" ,
1000+ labels,
1001+ vec ! [ edge( 0 , 0 , "E" , Style :: None ) ] ,
1002+ None ) ) ;
9811003 assert_eq ! ( r. unwrap( ) ,
9821004r#"digraph single_cyclic_node {
9831005 N0[label="N0"];
@@ -989,11 +1011,13 @@ r#"digraph single_cyclic_node {
9891011 #[ test]
9901012 fn hasse_diagram ( ) {
9911013 let labels = AllNodesLabelled ( vec ! ( "{x,y}" , "{x}" , "{y}" , "{}" ) ) ;
992- let r = test_input ( LabelledGraph :: new (
993- "hasse_diagram" , labels,
994- vec ! [ edge( 0 , 1 , "" , Style :: None ) , edge( 0 , 2 , "" , Style :: None ) ,
995- edge( 1 , 3 , "" , Style :: None ) , edge( 2 , 3 , "" , Style :: None ) ] ,
996- None ) ) ;
1014+ let r = test_input ( LabelledGraph :: new ( "hasse_diagram" ,
1015+ labels,
1016+ vec ! [ edge( 0 , 1 , "" , Style :: None ) ,
1017+ edge( 0 , 2 , "" , Style :: None ) ,
1018+ edge( 1 , 3 , "" , Style :: None ) ,
1019+ edge( 2 , 3 , "" , Style :: None ) ] ,
1020+ None ) ) ;
9971021 assert_eq ! ( r. unwrap( ) ,
9981022r#"digraph hasse_diagram {
9991023 N0[label="{x,y}"];
@@ -1024,10 +1048,12 @@ r#"digraph hasse_diagram {
10241048
10251049 let mut writer = Vec :: new ( ) ;
10261050
1027- let g = LabelledGraphWithEscStrs :: new (
1028- "syntax_tree" , labels,
1029- vec ! [ edge( 0 , 1 , "then" , Style :: None ) , edge( 0 , 2 , "else" , Style :: None ) ,
1030- edge( 1 , 3 , ";" , Style :: None ) , edge( 2 , 3 , ";" , Style :: None ) ] ) ;
1051+ let g = LabelledGraphWithEscStrs :: new ( "syntax_tree" ,
1052+ labels,
1053+ vec ! [ edge( 0 , 1 , "then" , Style :: None ) ,
1054+ edge( 0 , 2 , "else" , Style :: None ) ,
1055+ edge( 1 , 3 , ";" , Style :: None ) ,
1056+ edge( 2 , 3 , ";" , Style :: None ) ] ) ;
10311057
10321058 render ( & g, & mut writer) . unwrap ( ) ;
10331059 let mut r = String :: new ( ) ;
@@ -1051,8 +1077,8 @@ r#"digraph syntax_tree {
10511077 fn simple_id_construction ( ) {
10521078 let id1 = Id :: new ( "hello" ) ;
10531079 match id1 {
1054- Ok ( _) => { ; } ,
1055- Err ( ..) => panic ! ( "'hello' is not a valid value for id anymore" )
1080+ Ok ( _) => { }
1081+ Err ( ..) => panic ! ( "'hello' is not a valid value for id anymore" ) ,
10561082 }
10571083 }
10581084
@@ -1061,7 +1087,7 @@ r#"digraph syntax_tree {
10611087 let id2 = Id :: new ( "Weird { struct : ure } !!!" ) ;
10621088 match id2 {
10631089 Ok ( _) => panic ! ( "graphviz id suddenly allows spaces, brackets and stuff" ) ,
1064- Err ( ..) => { ; }
1090+ Err ( ..) => { }
10651091 }
10661092 }
10671093}
0 commit comments