net-cat 0.2.0

Minimal hand-rolled HTTP/1.1 client over std::net::TcpStream. Plain HTTP in v0; v0.2.0 adds an optional `tls` feature that wires rustls + webpki-roots Mozilla CA bundle so `https://` URLs work via the same `fetch` / `exchange` entry points. No external HTTP crate; framing and parsing are local. No `mut` beyond FFI carve-outs (`TcpStream::read_to_end`, rustls `Stream::new(&mut conn, &mut sock)`). Sixth sub-crate of a Servo-replacement webview runtime targeting Tauri.
# net-cat

Minimal hand-rolled HTTP/1.1 client over `std::net::TcpStream`.  Plain HTTP only in v0 (no TLS).

`net-cat` is the sixth sub-crate of a `comp-cat-rs` Servo-replacement webview runtime targeting Tauri integration.  It gives `web-api-cat`'s `fetch` binding a concrete backend without pulling an external HTTP crate.

## Example

```rust
use net_cat::{Method, Request, Url};

let url = Url::parse("http://example.com/").unwrap();
let request = Request::new(Method::Get, url).with_header("Accept", "text/html");
// fetch(&request) would perform a real network call -- not exercised in
// the doctest to keep `cargo test` offline.
```

## v0 scope

- `Method` (`GET`/`POST`/`PUT`/`DELETE`/`HEAD`/`OPTIONS`/`PATCH`).
- `Url` parser (`http://host[:port]/path?query`; `https://` returns `Error::UnsupportedScheme`).
- `Headers` (case-insensitive name lookup, ordered list).
- `Request` and `Response` with status, headers, body bytes.
- `fetch(request)` -- TCP connect, write request, read until EOF (forced `Connection: close`), parse response.
- Automatic `Host`, `User-Agent`, `Content-Length` headers.

## Deferred to v0.2+

- HTTPS / TLS via `rustls` behind a feature flag.
- Connection keep-alive / pooling.
- Chunked transfer encoding (we rely on `Connection: close` + read-to-EOF).
- Redirects, cookies, streaming bodies.
- Async API.

## License

MIT OR Apache-2.0