use MutexGuard;
use Mutex;
use Value;
use Serialize;
/// ## toml_from_str used to parse string to toml data
/// ```ignore
///{
/// let cargo_toml = tsu::toml_from_str(r#"
/// [package]
/// name = "useful_macro"
/// version = "0.2.6"
///
/// [dependencies]
/// serde = "1.0"
///
/// [dev-dependencies]
/// serde_derive = "1.0"
/// serde_json = "1.0"
/// "#);
///
/// let package = cargo_toml.get("package").unwrap();
/// let name = package.get("name").unwrap();
/// println!("{:#?}", &package);
/// println!("{:#?}", &name);
///
/// let dependencies = cargo_toml.get("dependencies").unwrap();
/// println!("{:#?}", &dependencies);
///
/// let dev_dependencies = cargo_toml.get("dev-dependencies").unwrap();
/// println!("{:#?}", &dev_dependencies);
///}
/// ```
/// ## to_toml_str used to convert struct to toml string
/// ```ignore
///{
/// use serde_derive::Serialize;
/// #[derive(Serialize)]
/// struct Human {
/// name: String,
/// age: u8,
/// country: Country,
/// }
/// #[derive(Serialize)]
/// struct Country {
/// name: String,
/// }
/// let user = Human {
/// name: "mike".to_string(),
/// age: 18,
/// country: Country {
/// name: "country_name".to_string(),
/// },
/// };
/// let toml = tsu::to_toml_str(&user);
/// println!("{}",toml.as_str());
///}
/// ```
/// ## toml_from_path used to read toml file and parse contents to toml data
/// ```ignore
/// {
/// let cargo_toml = tsu::toml_from_path("./Cargo.toml");
/// let dependencies = cargo_toml.get("dependencies").unwrap();
/// println!("{:#?}", &dependencies);
/// }
/// ```
/// ## convert_toml_to_json used to convert toml to json
/// ```ignore
/// {
/// let toml_data = r#"
/// [package]
/// name = "package_name"
/// version = "0.3.0"
///
/// [dependencies]
/// serde = "1.0"
///
/// [dev-dependencies]
/// serde_derive = "1.0"
/// serde_json = "1.0"
/// "#;
/// let json = convert_toml_to_json(toml_data).unwrap();
/// assert_eq!("{\n \"dependencies\": {\n \"serde\": \"1.0\"\n },\n \"dev-dependencies\": {\n \"serde_derive\": \"1.0\",\n \"serde_json\": \"1.0\"\n },\n \"package\": {\n \"name\": \"package_name\",\n \"version\": \"0.3.0\"\n }\n}",json);
///
/// }
/// ```
/// ## convert_json_to_toml used to convert json to toml
/// ```ignore
/// {
/// let json_data= r#"
/// {
/// "data":{
/// "version":"0.12.0",
/// "category":"rust"
/// }
/// }
/// "#;
/// let toml = convert_json_to_toml(&json_data).unwrap();
/// assert_eq!("[data]\nversion = '0.12.0'\ncategory = 'rust'\n",toml);
/// }
/// ```