Thank you for taking the time to file a bug report. The following describes
some guidelines to creating a minimally useful ticket.

Above all else: do not describe your problem, **SHOW** your problem.

#### What version of the `csv` crate are you using?

Replace this text with the version. (The version can be found in your
Cargo.lock.)

#### Briefly describe the question, bug or feature request.

Replace this text with a description.

#### Include a complete program demonstrating a problem.

Whether you're asking for a feature, filing a bug or just asking a question,
this section should almost always include some kind of code that you have
written. The code provided should be able to be compiled by others and should
be as feasibly small as possible.

If you're reporting a bug, then the code should exhibit some undesirable
characteristic.

If you're asking a question, then the code should represent what you've tried
so far.

If you're requesting a feature, then provide code that does the closest
possible thing to what you're requesting, if possible.

#### What is the observed behavior of the code above?

Replace this text with the output of the program.

#### What is the expected or desired behavior of the code above?

Replace this text with the expected or desired output of the program.
