tsv 0.1.0

tsv (tab-seperated-values) data format for serde (serialization/deserialization)
Documentation
The tsv project introduces a new format for data serialization/deserialization, which is text-based and deals with tabular data.

# The problem

At [serde](https://serde.rs)'s point of view, the classic [tsv](https://www.iana.org/assignments/media-types/text/tab-separated-values) is only applicable to the schema of (a sequence of) a `struct` composed of primitives( integer, floats, strings etc). The specification has to be extended to allow arbitrary schemas, such as a `struct` of a `struct`.

# The solution

This project extends the spec by placing sequences in columns. See tsv-spec.txt for specification.
It uses serde crate for serialization/deserialization, and reflection crate for generating column names and dealing with `enum`s.

## Notice

If you impl Serialize/Deserialize for your types to tell serde they are sequences/maps, do make sure their `schemata()` and `Vec::schemata()`/`HashMap::schemata()` are isomorphic. 

# Pros

1. Simple.
  The only requirement for end users to use tsv files is to understand what a table is. It is deadly simple as a configuration file format for non-technical users.

2. Available.
  You can use Microsoft Excel, OpenOffice/LibreOffie Calc and text editors that support [elastic tabstops]http://nickgravgaard.com/elastic-tabstops/ to view/edit tsv files.
  And it is easy to write tsv by hand if you have read all the 63 lines of the spec.

# Cons

1. Not efficiency-oriented.

2. Not self-descripting.

# License

Under MIT.

# Example

  A cargo configuration file written in tsv format could look like the following table( with spaces replacing tabs ):

  ```text
                                          deps
  package                         lib             value    
  name    version authors keyword macro   name    Version Path
  tsv     0.1.0   oooutlk tsv     X       serde   1.0
                          tab             trees           ~/trees
                          table
                          serde

  ```

See [serialization example](https://github.com/oooutlk/tsv/blob/master/tsv/src/ser.rs#L548) 
and [deserialization example](https://github.com/oooutlk/tsv/blob/master/tsv/src/de.rs#L802).