/* Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ċ Ġ* Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . rust . cargo . project . settings Ċ Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . components . Service Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . util . Three State Ċ import Ġcom . intellij . util . io . system In dependent Path Ċ import Ġcom . intellij . util . messages . Topic Ċ import Ġcom . intellij . util . xml b . annotations . Transient Ċ import Ġorg . jetbrains . annotations . Test Only Ċ import Ġorg . rust . cargo . toolchain . External L inter Ċ import Ġorg . rust . cargo . toolchain . Rs Tool chain Ċ import Ġorg . rust . cargo . toolchain . Rs Tool chain Base Ċ import Ġorg . rust . cargo . toolchain . Rs Tool chain Provider Ċ import Ġorg . rust . ide . experiments . Rs Experiment s Ċ import Ġorg . rust . openapi ext . is Feature Enabled Ċ import Ġorg . rust . openapi ext . is UnitTest Mode Ċ import Ġjava . nio . file . Paths Ċ import Ġkotlin . reflect . K Property 1 Ċ import Ġkotlin . reflect . full . find Annotation Ċ import Ġkotlin . reflect . full . member Properties Ċ Ċ interface ĠRust Project Settings Service Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠState ( ĊĠĠĠĠĠĠĠ Ġvar Ġversion : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ@ A ffect s Cargo Metadata ĊĠĠĠĠĠĠĠ Ġvar Ġtoolchain Home Directory : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġauto Show Errors In Editor : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġvar Ġauto Update Enabled : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġ// ĠUsually , Ġwe Ġuse Ġ` rust up ` Ġto Ġfind Ġstdlib Ġautomatically , ĊĠĠĠĠĠĠĠ Ġ// Ġbut Ġif Ġone Ġdoes Ġnot Ġuse Ġrust up , Ġit 's Ġpossible Ġto ĊĠĠĠĠĠĠĠ Ġ// Ġprovide Ġpath Ġto Ġstdlib Ġexplicitly . ĊĠĠĠĠĠĠĠ Ġ@ A ffect s Cargo Metadata ĊĠĠĠĠĠĠĠ Ġvar Ġexplicit Path To Std lib : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ@ A ffect s Highlighting ĊĠĠĠĠĠĠĠ Ġvar Ġexternal L inter : ĠExternal L inter Ġ= ĠExternal L inter . DEFAULT , ĊĠĠĠĠĠĠĠ Ġ@ A ffect s Highlighting ĊĠĠĠĠĠĠĠ Ġvar Ġrun External L inter On The Fly : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġ@ A ffect s Highlighting ĊĠĠĠĠĠĠĠ Ġvar Ġexternal L inter Arguments : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġ@ A ffect s Highlighting ĊĠĠĠĠĠĠĠ Ġvar Ġcompile All Targets : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġvar Ġuse Offline : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġvar Ġmacro Expansion Engine : ĠMacro Expansion Engine Ġ= Ġdefault Macro Expansion Engine , ĊĠĠĠĠĠĠĠ Ġ@ A ffect s Highlighting ĊĠĠĠĠĠĠĠ Ġvar Ġnew Resolve Enabled : ĠBoolean Ġ= Ġis Feature Enabled ( Rs Experiment s . RESOL VE _ NEW _ ENGINE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠSystem . getenv (" INTEL LI J _ R UST _ FORCE _ USE _ OLD _ RESOL VE ") Ġ== Ġnull , ĊĠĠĠĠĠĠĠ Ġ@ A ffect s Highlighting ĊĠĠĠĠĠĠĠ Ġvar Ġdo ctest Injection Enabled : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġvar Ġuse Rust fmt : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġvar Ġrun Rust fmt On Save : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ get : Transient ĊĠĠĠĠĠĠĠ Ġ@ set : Transient ĊĠĠĠĠĠĠĠ Ġvar Ġtoolchain : ĠRs Tool chain Base ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġtoolchain Home Directory ?. let Ġ{ ĠRs Tool chain Provider . get Tool chain ( Paths . get ( it )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolchain Home Directory Ġ= Ġvalue ?. location ?. system In dependent Path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ", Ġ" Deprecated Callable Add Replace With ") ĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Use Ġtoolchain Ġproperty ") ĊĠĠĠĠĠĠĠ Ġfun Ġset Tool chain ( toolchain : ĠRs Tool chain ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolchain Home Directory Ġ= Ġtoolchain ?. location ?. system In dependent Path ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠMacro Expansion Engine Ġ{ ĊĠĠĠĠĠĠĠ ĠDISABLE D , ĠO LD , ĠNEW ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Retention ( Annotation Retention . RUNTIME ) ĊĠĠĠ Ġ@ Target ( Annotation Target . PROPERTY ) ĊĠĠĠ Ġprivate Ġannotation Ġclass ĠA ffect s Cargo Metadata ĊĊĠĠĠ Ġ@ Retention ( Annotation Retention . RUNTIME ) ĊĠĠĠ Ġ@ Target ( Annotation Target . PROPERTY ) ĊĠĠĠ Ġprivate Ġannotation Ġclass ĠA ffect s Highlighting ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAllows Ġto Ġmodify Ġsettings . ĊĠĠĠĠ Ġ* ĠAfter Ġsetting Ġchange , ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmodify ( action : Ġ( State ) Ġ-> ĠUnit ) ĊĊĠĠĠ Ġ@ Test Only ĊĠĠĠ Ġfun Ġmodify Temporary ( parent Disposable : ĠDis posable , Ġaction : Ġ( State ) Ġ-> ĠUnit ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġcurrent Ġstate Ġof Ġthe Ġservice . ĊĠĠĠĠ Ġ* ĠNote , Ġresult Ġis Ġa Ġcopy Ġof Ġservice Ġstate , Ġso Ġyou Ġneed Ġto Ġset Ġmodified Ġstate Ġback Ġto Ġapply Ġchanges ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġsettings State : ĠState ĊĊĠĠĠ Ġval Ġversion : ĠInt ? ĊĠĠĠ Ġval Ġtoolchain : ĠRs Tool chain Base ? ĊĠĠĠ Ġval Ġexplicit Path To Std lib : ĠString ? ĊĠĠĠ Ġval Ġauto Show Errors In Editor : ĠThree State ĊĠĠĠ Ġval Ġauto Update Enabled : ĠBoolean ĊĠĠĠ Ġval Ġexternal L inter : ĠExternal L inter ĊĠĠĠ Ġval Ġrun External L inter On The Fly : ĠBoolean ĊĠĠĠ Ġval Ġexternal L inter Arguments : ĠString ĊĠĠĠ Ġval Ġcompile All Targets : ĠBoolean ĊĠĠĠ Ġval Ġuse Offline : ĠBoolean ĊĠĠĠ Ġval Ġmacro Expansion Engine : ĠMacro Expansion Engine ĊĠĠĠ Ġval Ġnew Resolve Enabled : ĠBoolean ĊĠĠĠ Ġval Ġdo ctest Injection Enabled : ĠBoolean ĊĠĠĠ Ġval Ġuse Rust fmt : ĠBoolean ĊĠĠĠ Ġval Ġrun Rust fmt On Save : ĠBoolean ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġ@ Deprecated (" Use Ġtoolchain Ġproperty ") ĊĠĠĠ Ġfun Ġget Tool chain (): ĠRs Tool chain ? ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠShow Ġa Ġdialog Ġfor Ġtoolchain Ġconfiguration ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconfigure Tool chain () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠR UST _ SETTINGS _ TOPIC : ĠTopic < Rust Settings Listener > Ġ= ĠTopic . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" rust Ġsettings Ġchanges ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRust Settings Listener :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTopic . Broadcast Direction . TO _ PARENT ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdefault Macro Expansion Engine : ĠMacro Expansion Engine ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( is Feature Enabled ( Rs Experiment s . MAC ROS _ NEW _ ENGINE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMacro Expansion Engine . NEW ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMacro Expansion Engine . OLD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠRust Settings Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġrust Settings Changed ( e : ĠRust Settings Changed Event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠRust Settings Changed Event ( val Ġold State : ĠState , Ġval ĠnewState : ĠState ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġaffects Cargo Metadata : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġcargo Metadata A ffect ing Props . any (:: is Changed ) ĊĊĠĠĠĠĠĠĠ Ġval Ġaffects Highlighting : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġhighlighting A ffect ing Props . any (:: is Changed ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĠUse Ġit Ġlike Ġ` event . is Changed ( State :: foo )` Ġto Ġcheck Ġwhether Ġ` foo ` Ġproperty Ġis Ġchanged Ġor Ġnot Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġis Changed ( prop : ĠK Property 1 < State , Ġ* >): ĠBoolean Ġ= Ġprop . get ( old State ) Ġ!= Ġprop . get ( newState ) ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcargo Metadata A ffect ing Props : ĠList < K Property 1 < State , Ġ* >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState :: class . member Properties . filter Ġ{ Ġit . find Annotation < A ffect s Cargo Metadata >() Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġhighlighting A ffect ing Props : ĠList < K Property 1 < State , Ġ* >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState :: class . member Properties . filter Ġ{ Ġit . find Annotation < A ffect s Highlighting >() Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ val ĠProject . rust Settings : ĠRust Project Settings Service ĊĠĠĠ Ġget () Ġ= ĠService Manager . getService ( this , ĠRust Project Settings Service :: class . java ) ĊĠĠĠĠĠĠĠ Ġ?: Ġerror (" Failed Ġto Ġget ĠRust Project Settings Service Ġfor Ġ$ this ") Ċ Ċ val ĠProject . toolchain : ĠRs Tool chain Base ? ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoolchain Ġ= Ġrust Settings . toolchain ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolchain Ġ!= Ġnull Ġ-> Ġtoolchain ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis UnitTest Mode Ġ-> ĠRs Tool chain Base . suggest () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ