colonbuilder 0.1.6

A rust builder offers from_str method to build struct from colon separate string.
Documentation
[Ident { ident: "impl", span: #5 bytes(35..44)
    }, Ident { ident: "P", span: #0 bytes(54..55)
    }, Group { delimiter: Brace, stream: TokenStream [Ident { ident: "pub", span: #5 bytes(35..44)
            }, Ident { ident: "fn", span: #5 bytes(35..44)
            }, Ident { ident: "s", span: #0 bytes(62..63)
            }, Group { delimiter: Parenthesis, stream: TokenStream [Punct { ch: '&', spacing: Alone, span: #5 bytes(35..44)
                    }, Ident { ident: "self", span: #5 bytes(35..44)
                    }, Punct { ch: ',', spacing: Alone, span: #5 bytes(35..44)
                    }, Ident { ident: "s", span: #5 bytes(35..44)
                    }, Punct { ch: 
':', spacing: Alone, span: #5 bytes(35..44)
                    }, Punct { ch: '&', spacing: Alone, span: #5 bytes(35..44)
                    }, Ident { ident: "str", span: #5 bytes(35..44)
                    }
                ], span: #5 bytes(35..44)
            }, Punct { ch: '-', spacing: Joint, span: #5 bytes(35..44)
            }, Punct { ch: '>', spacing: Alone, span: #5 bytes(35..44)
            }, Ident { ident: "String", span: #5 bytes(35..44)
            }, Group { delimiter: Brace, stream: TokenStream [Ident { ident: "s", span: #5 bytes(35..44)
                    }, Punct { ch: '.', spacing: Alone, span: #5 bytes(35..44)
                    }, Ident { ident: "to_string", span: #5 bytes(35..44)
                    }, Group { delimiter: Parenthesis, stream: TokenStream [], span: #5 bytes(35..44)
                    }
                ], span: #5 bytes(35..44)
            }, Ident { ident: "pub", span: #5 bytes(35..44)
            }, Ident { ident: "fn", span: #5 bytes(35..44)
            }, Ident { ident: "t", span: #0 bytes(77..78)
            }, Group { delimiter: Parenthesis, stream: TokenStream [Punct { ch: '&', spacing: Alone, span: #5 bytes(35..44)
                    }, Ident { ident: "self", span: #5 bytes(35..44)
                    }, Punct { ch: ',', spacing: Alone, span: #5 bytes(35..44)
                    }, Ident { ident: "s", span: #5 bytes(35..44)
                    }, Punct { ch: ':', spacing: Alone, span: #5 bytes(35..44)
                    }, Punct { ch: '&', 
spacing: Alone, span: #5 bytes(35..44)
                    }, Ident { ident: "str", span: #5 bytes(35..44)
                    }
                ], span: #5 bytes(35..44)
            }, Punct { ch: '-', spacing: Joint, span: #5 bytes(35..44)
            }, Punct { ch: '>', spacing: Alone, span: #5 bytes(35..44)
            }, Ident { ident: "String", span: #5 bytes(35..44)
            }, Group { delimiter: Brace, stream: TokenStream [Ident { ident: "s", span: #5 bytes(35..44)
                    }, Punct { ch: '.', spacing: Alone, span: #5 bytes(35..44)
                    }, Ident { ident: "to_string", span: #5 bytes(35..44)
                    }, Group { delimiter: Parenthesis, stream: TokenStream [], span: #5 bytes(35..44)
                    }
                ], span: #5 bytes(35..44)
            }, Ident { ident: "fn", span: #5 bytes(35..44)
            }, Ident { ident: "build", span: #5 bytes(35..44)
            }, Group { delimiter: Parenthesis, stream: TokenStream [Punct { ch: '&', spacing: Alone, span: #5 bytes(35..44)
                    }, Ident { ident: "self", span: #5 bytes(35..44)
                    }, Punct { ch: ',', spacing: Alone, span: #5 bytes(35..44)
                    }, Ident { ident: "s", span: #5 bytes(35..44)
                    }, Punct { ch: ':', spacing: Alone, span: #5 bytes(35..44)
                    }, Punct { ch: '&', spacing: Alone, span: #5 bytes(35..44)
                    }, Ident { ident: "str", span: #5 bytes(35..44)
                    }
                ], span: #5 bytes(35..44)
            }, Punct { ch: '-', spacing: Joint, span: #5 bytes(35..44)
            }, Punct { ch: '>', spacing: Alone, span: #5 bytes(35..44)
            }, Ident { ident: "P", span: #0 bytes(54..55)
            }, Group { delimiter: Brace, stream: TokenStream [Ident { ident: "P", span: #0 bytes(54..55)
                    }, Group { delimiter: Brace, stream: TokenStream [Ident { ident: "s", span: #0 bytes(62..63)
                            }, Punct { ch: ':', spacing: Alone, span: #5 bytes(35..44)
                            }, Ident { ident: "self", span: #5 bytes(35..44)
                            }, Punct { ch: '.', spacing: Alone, span: #5 bytes(35..44)
                            }, Ident { ident: "s", span: #0 bytes(62..63)
                            }, Group { delimiter: Parenthesis, stream: TokenStream [Ident { ident: "s", span: #5 bytes(35..44)
                                    }
                                ], span: #5 bytes(35..44)
                            }, Punct { ch: ',', spacing: Alone, span: #5 bytes(35..44)
                            }, Ident { ident: "t", span: #0 bytes(77..78)
                            }, Punct { ch: ':', spacing: Alone, span: #5 bytes(35..44)
                            }, Ident { ident: "self", span: #5 bytes(35..44)
                            }, Punct { ch: '.', spacing: Alone, span: #5 bytes(35..44)
                            }, Ident { ident: "t", span: #0 bytes(77..78)
                            }, Group { delimiter: Parenthesis, stream: TokenStream [Ident { ident: "s", span: #5 bytes(35..44)
                                    }
                                ], span: #5 bytes(35..44)
                            }, Punct 
{ ch: ',', spacing: Alone, span: #5 bytes(35..44)
                            }
                        ], span: #5 bytes(35..44)
                    }
                ], span: #5 bytes(35..44)
            }
        ], span: #5 bytes(35..44)
    }
]