Type Safety Validation Skill
Ensure Mojo code follows type safety principles.
When to Use
- Type errors during compilation
- Code review for type safety
- Designing generic functions
- Working with trait constraints
Quick Reference
# Generic function with type parameter
fn add[dtype: DType](a: Scalar[dtype], b: Scalar[dtype]) -> Scalar[dtype]:
return a + b
# Trait constraint
fn process[T: Copyable](data: T):
let copy = data # T is Copyable
# Compile-time check
@parameter
fn validate[size: Int]():
constrained[size > 0, "Size must be positive"]()
Workflow
- Add type annotations - All parameters and returns
- Use type parameters - For generic code
- Add trait constraints - When required
- Run compiler - Verify type checking passes
- Test generic code - With multiple types
Mojo-Specific Notes
- Prefer
fnoverdeffor type safety - Generic type parameters use
[T]syntax - Traits constrain what operations are allowed
- Compile-time checks prevent runtime errors
Error Handling
| Error | Cause | Solution |
|-------|-------|----------|
| Missing type annotation | Untyped parameter | Add : Type to parameter |
| Type mismatch | Incompatible types | Add explicit conversion |
| Unsupported operation | Trait not constrained | Add trait constraint |
| Constraint failed | Compile-time check failed | Verify constraint conditions |
References
.claude/shared/mojo-guidelines.md- Current syntax and patterns.claude/shared/mojo-anti-patterns.md- Common constructor mistakes
微信扫一扫