@@ -34,14 +34,14 @@ pub struct Sysroot {
3434}
3535
3636#[ derive( Debug , Clone , Eq , PartialEq ) ]
37- pub ( crate ) enum SysrootWorkspace {
37+ pub enum SysrootWorkspace {
3838 Workspace ( CargoWorkspace ) ,
3939 Stitched ( Stitched ) ,
4040 Empty ,
4141}
4242
4343#[ derive( Debug , Clone , Eq , PartialEq ) ]
44- pub ( crate ) struct Stitched {
44+ pub struct Stitched {
4545 crates : Arena < SysrootCrateData > ,
4646}
4747
@@ -227,18 +227,21 @@ impl Sysroot {
227227 }
228228 }
229229
230- pub fn load_workspace ( & mut self , sysroot_source_config : & SysrootSourceWorkspaceConfig ) {
230+ pub fn load_workspace (
231+ & self ,
232+ sysroot_source_config : & SysrootSourceWorkspaceConfig ,
233+ ) -> Option < SysrootWorkspace > {
231234 assert ! ( matches!( self . workspace, SysrootWorkspace :: Empty ) , "workspace already loaded" ) ;
232- let Self { root : _, src_root : Some ( src_root) , workspace, error : _ } = self else { return } ;
235+ let Self { root : _, src_root : Some ( src_root) , workspace : _, error : _ } = self else {
236+ return None ;
237+ } ;
233238 if let SysrootSourceWorkspaceConfig :: CargoMetadata ( cargo_config) = sysroot_source_config {
234239 let library_manifest = ManifestPath :: try_from ( src_root. join ( "Cargo.toml" ) ) . unwrap ( ) ;
235240 if fs:: metadata ( & library_manifest) . is_ok ( ) {
236241 if let Some ( loaded) =
237242 Self :: load_library_via_cargo ( library_manifest, src_root, cargo_config)
238243 {
239- * workspace = loaded;
240- self . load_core_check ( ) ;
241- return ;
244+ return Some ( loaded) ;
242245 }
243246 }
244247 }
@@ -286,11 +289,11 @@ impl Sysroot {
286289 }
287290 }
288291 }
289- * workspace = SysrootWorkspace :: Stitched ( stitched) ;
290- self . load_core_check ( ) ;
292+ Some ( SysrootWorkspace :: Stitched ( stitched) )
291293 }
292294
293- fn load_core_check ( & mut self ) {
295+ pub fn set_workspace ( & mut self , workspace : SysrootWorkspace ) {
296+ self . workspace = workspace;
294297 if self . error . is_none ( ) {
295298 if let Some ( src_root) = & self . src_root {
296299 let has_core = match & self . workspace {
0 commit comments