You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: main.rs
    path of file: ./repos/fornjot/tools/cross-compiler/src
    
    the code of the file until where you have to start completion: //! Cross-compiler for the Fornjot build
//!
//! This tools cross-compiles the Fornjot crates that support that to the
//! targets they support. This is less resource-intense than using a `matrix` in
//! GitHub Actions (which would start one build job per crate and target), and
//! allows for the cross-compilation code to be re-used in `justfile`.

use std::process::Command;

use anyhow::anyhow;

fn main() -> anyhow::Result<()> {
    let targets = [
        Target {
            triple: "aarch64-apple-ios",
            crates: &["fj-core", "fj-export", "fj-interop", "fj-math"],
    
fn main() -> anyhow::Result<()> {
    let targets = [
        Target {
            triple: "aarch64-apple-ios",
            crates: &["fj-core", "fj-export", "fj-interop", "fj-math"],
        },
        Target {
            triple: "aarch64-linux-android",
            crates: &["fj-core", "fj-export", "fj-interop", "fj-math"],
        },
        Target {
            triple: "wasm32-unknown-unknown",
            crates: &[
                "fj-core",
                "fj-export",
                "fj-interop",
                "fj-math",
                "fj-viewer",
            ],
        },
    ];

    for target in targets {
        for crate_ in target.crates {
            let mut command = Command::new("cargo");
            command
                .arg("build")
                .arg("--all-features")
                .args(["--target", target.triple])
                .args(["-p", crate_])
                .env("RUSTFLAGS", "-D warnings");

            println!("Running {command:?}");
            let status = command.status()?;

            if !status.success() {
                return Err(anyhow!("Cargo exited with error code: {status}"));
            }
        }
    }

    Ok(())
}