workspace.rs

 1use std::fs;
 2
 3use anyhow::{anyhow, Result};
 4use cargo_toml::{Manifest, Workspace};
 5use toml;
 6
 7/// Returns the Cargo workspace.
 8pub fn load_workspace() -> Result<Workspace> {
 9    let workspace_cargo_toml = fs::read_to_string("Cargo.toml")?;
10    let workspace_cargo_toml: Manifest = toml::from_str(&workspace_cargo_toml)?;
11
12    let workspace = workspace_cargo_toml
13        .workspace
14        .ok_or_else(|| anyhow!("top-level Cargo.toml is not a Cargo workspace"))?;
15
16    Ok(workspace)
17}