# Migration Guide: Dynamic ID Method Signatures
## Breaking Change in v0.2.1
Dynamic ID method signatures have been changed from consuming parameters to borrowing parameters for better ergonomics.
### What Changed
**Before (v0.2.0 and earlier):**
```rust
pub fn id(&self, id: impl Into<String>) -> TaskDir
```
**After (v0.2.1+):**
```rust
pub fn id(&self, id: &str) -> TaskDir
```
### Migration Steps
#### 1. Remove `.to_string()` calls
**Before:**
```rust
let task = root.tasks().id("task-1".to_string());
let project = root.projects().project("my-project".to_string());
```
**After:**
```rust
let task = root.tasks().id("task-1");
let project = root.projects().project("my-project");
```
#### 2. Use references for String variables
**Before:**
```rust
let task_name = String::from("task-1");
let task = root.tasks().id(task_name); // Consumed task_name
```
**After:**
```rust
let task_name = String::from("task-1");
let task = root.tasks().id(&task_name); // Borrows task_name
// task_name is still available for reuse
```
#### 3. String literals work directly
**Before:**
```rust
let task = root.tasks().id("task-1"); // Already worked
```
**After:**
```rust
let task = root.tasks().id("task-1"); // Still works, no change needed
```
### Benefits
1. **No parameter consumption**: Variables can be reused without cloning
2. **Cleaner syntax**: No need for `.to_string()` calls
3. **Better performance**: Avoids unnecessary string allocations
4. **More intuitive**: Matches standard Rust patterns for string parameters
### Compiler Errors
If you see errors like:
```
error[E0308]: mismatched types
expected `&str`, found `String`
```
Simply change:
```rust
// From this:
.id(variable.to_string())
// To this:
.id(&variable)
```
Or for string literals:
```rust
// From this:
.id("name".to_string())
// To this:
.id("name")
```
### Supported ID Types
The new signatures support type-specific references:
- `String` → `&str`
- `u32` → `&u32`
- `u64` → `&u64`
- `i32` → `&i32`
- `i64` → `&i64`
All other types fall back to `&str` and use `.to_string()` internally.