pub struct SpecRelationToField { /* private fields */ }Expand description
SpecRelationToField rule
Analyzes Spec relations (DependsOn, RelatedTo, PartOf) to suggest corresponding struct fields that should exist.
§Rule Code
RS007 (Ryo Spec)
§Detection
- Find Spec TypeAliases with relations (DependsOn, RelatedTo, PartOf)
- Get the wrapped struct type
- Check if struct has fields referencing the relation target
- Suggest AddField if missing
§Example
ⓘ
type UserSpec = Spec<DomainGroup, User, [DependsOn<Order>]>;
pub struct User {
id: UserId,
name: String,
// Missing: order field!
}
// Suggestion: Add `order_id: OrderId` or `orders: Vec<Order>` field§Fix
Generates AddField MutationSpec to add the missing field.
Implementations§
Trait Implementations§
Source§impl Default for SpecRelationToField
impl Default for SpecRelationToField
Source§impl SpecSuggest for SpecRelationToField
impl SpecSuggest for SpecRelationToField
Source§fn spec_suffix(&self) -> &str
fn spec_suffix(&self) -> &str
Get the suffix pattern for identifying Spec TypeAliases (default: “Spec”)
Source§fn is_spec_alias(&self, name: &str) -> bool
fn is_spec_alias(&self, name: &str) -> bool
Check if a TypeAlias name looks like a Spec
Source§fn extract_base_type<'a>(&self, alias_name: &'a str) -> Option<&'a str>
fn extract_base_type<'a>(&self, alias_name: &'a str) -> Option<&'a str>
Extract the base type name from a Spec alias name
e.g., “TaskSpec” -> “Task”
Source§fn get_module_path(&self, path: &SymbolPath) -> Option<SymbolPath>
fn get_module_path(&self, path: &SymbolPath) -> Option<SymbolPath>
Get the module path for a symbol (parent of the symbol)
Source§impl Suggest for SpecRelationToField
impl Suggest for SpecRelationToField
Source§fn description(&self) -> &str
fn description(&self) -> &str
Human-readable description
Source§fn category(&self) -> SuggestCategory
fn category(&self) -> SuggestCategory
Category for filtering/grouping
Source§fn safety_level(&self) -> SafetyLevel
fn safety_level(&self) -> SafetyLevel
Safety level for auto-application decisions
Source§fn priority_weight(&self) -> f32
fn priority_weight(&self) -> f32
Priority weight for ranking (higher = more important)
Source§fn detect(
&self,
ctx: &AnalysisContext,
symbols: &[SymbolId],
) -> Vec<SuggestOpportunity>
fn detect( &self, ctx: &AnalysisContext, symbols: &[SymbolId], ) -> Vec<SuggestOpportunity>
Detect opportunities for the given symbols Read more
Source§fn to_mutation_specs(
&self,
ctx: &AnalysisContext,
opportunity: &SuggestOpportunity,
) -> SuggestResult<Vec<MutationSpec>>
fn to_mutation_specs( &self, ctx: &AnalysisContext, opportunity: &SuggestOpportunity, ) -> SuggestResult<Vec<MutationSpec>>
Convert a detected opportunity to executable MutationSpecs Read more
Source§fn rule_id(&self) -> Option<&str>
fn rule_id(&self) -> Option<&str>
Optional rule ID for pattern-based rules (e.g., “RL021”).
Returns None for non-pattern suggestions.
Source§fn target_scopes(&self) -> Vec<SymbolScope>
fn target_scopes(&self) -> Vec<SymbolScope>
Target scopes where this suggest applies. Read more
Source§fn accepts_params(&self) -> bool
fn accepts_params(&self) -> bool
Whether this suggestion accepts external parameters. Read more
Source§fn param_schema(&self) -> Vec<ParamDef>
fn param_schema(&self) -> Vec<ParamDef>
Schema of accepted parameters (for LLM consumption). Read more
Source§fn detect_with_params(
&self,
ctx: &AnalysisContext,
symbols: &[SymbolId],
_params: &SuggestParams,
) -> Vec<SuggestOpportunity>
fn detect_with_params( &self, ctx: &AnalysisContext, symbols: &[SymbolId], _params: &SuggestParams, ) -> Vec<SuggestOpportunity>
Detect opportunities with external parameters. Read more
Auto Trait Implementations§
impl Freeze for SpecRelationToField
impl RefUnwindSafe for SpecRelationToField
impl Send for SpecRelationToField
impl Sync for SpecRelationToField
impl Unpin for SpecRelationToField
impl UnsafeUnpin for SpecRelationToField
impl UnwindSafe for SpecRelationToField
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more