error-location 0.1.0

A lightweight utility for capturing and displaying error locations in Rust
Documentation
# error-location Crate - Quick Start

Your complete GitHub repository for the `error-location` crate is ready!

## What's Included

### Core Files
- **`src/lib.rs`** - The main library with your `ErrorLocation` struct, now with comprehensive documentation and tests
- **`Cargo.toml`** - Properly configured package metadata ready for crates.io
- **`README.md`** - Detailed documentation with examples and usage patterns

### Documentation
- **`SETUP.md`** - Complete guide for setting up GitHub repo and publishing to crates.io
- **`CONTRIBUTING.md`** - Guidelines for contributors
- **`CHANGELOG.md`** - Version history (following Keep a Changelog format)

### Legal
- **`LICENSE-MIT`** - MIT License
- **`LICENSE-APACHE`** - Apache 2.0 License
- Dual-licensed for maximum compatibility (standard in Rust ecosystem)

### Development
- **`.gitignore`** - Comprehensive Rust .gitignore
- **`.github/workflows/ci.yml`** - Complete CI/CD pipeline with:
  - Multi-platform testing (Linux, macOS, Windows)
  - Multiple Rust versions (stable, beta, nightly, MSRV 1.70)
  - Formatting checks (rustfmt)
  - Linting (clippy)
  - Documentation builds
  - Code coverage (tarpaulin)

## Next Steps

### 1. Update Personal Information

Edit these files and replace placeholders:

**Cargo.toml:**
```toml
authors = ["Tony <your-actual-email@example.com>"]
repository = "https://github.com/YOUR_USERNAME/error-location"
```

**README.md:**
- Replace all `yourusername` with your GitHub username in URLs
- Update badge links

**CHANGELOG.md:**
- Replace `yourusername` in comparison URLs

### 2. Initialize Git Repository

```bash
cd error-location
git init
git add .
git commit -m "Initial commit: error-location crate v0.1.0"
```

### 3. Create GitHub Repository

1. Go to https://github.com/new
2. Create a repository named `error-location`
3. Don't initialize with README (you already have one)
4. Push your code:

```bash
git remote add origin https://github.com/YOUR_USERNAME/error-location.git
git branch -M main
git push -u origin main
```

### 4. Test Before Publishing

```bash
# Build
cargo build --release

# Run tests
cargo test

# Check formatting
cargo fmt --all -- --check

# Run clippy
cargo clippy --all-targets --all-features -- -D warnings

# Build docs
cargo doc --no-deps --open
```

### 5. Publish to crates.io

See `SETUP.md` for the complete publishing guide, but in short:

```bash
# Get API token from https://crates.io/settings/tokens
cargo login YOUR_API_TOKEN

# Dry run
cargo publish --dry-run

# Publish!
cargo publish
```

## Features

Your crate includes:

✅ Zero dependencies (only uses `std`)
✅ Full documentation with examples
✅ Comprehensive test coverage
✅ Proper error handling patterns
✅ Integration examples with `thiserror`
✅ CI/CD pipeline
✅ Multi-platform support
✅ MSRV: Rust 1.70

## Example Usage

```rust
use error_location::ErrorLocation;
use std::panic::Location;
use thiserror::Error;

#[derive(Error, Debug)]
pub enum MyError {
    #[error("Error at {location}: {message}")]
    WithLocation {
        message: String,
        location: ErrorLocation,
    },
}

#[track_caller]
fn do_something() -> Result<(), MyError> {
    Err(MyError::WithLocation {
        message: "Something failed".to_string(),
        location: ErrorLocation::from(Location::caller()),
    })
}
```

## Questions?

- Check `SETUP.md` for detailed setup instructions
- Check `CONTRIBUTING.md` for development guidelines
- Check `README.md` for usage examples

Good luck with your crate! 🦀