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: map_coords.rs
    path of file: ./repos/geo/geo/src/algorithm
    
    the code of the file until where you have to start completion: //! # Advanced Example: Fallible Geometry coordinate conversion using `PROJ`
//!
#![cfg_attr(feature = "use-proj", doc = "```")]
#![cfg_attr(not(feature = "use-proj"), doc = "```ignore")]
//! // activate the [use-proj] feature in cargo.toml in order to access proj functions
//! use approx::assert_relative_eq;
//! use geo::{Coord, Point};
//! use geo::MapCoords;
//! use proj::{Coord as ProjCoord, Proj, ProjError};
//! // GeoJSON uses the WGS 84 coordinate system
//! let from = "EPSG:4326";
//! // The NAD83 / California zone 6 (ftUS) coordinate system
//! let to = "EPSG:2230";
//! let to_feet = Proj::new_known_crs(&from, &to, None).unwrap();
//! let transform = |c: Coord<f64>| -> Result<_, ProjError> {
//!     // proj can accept Point, Coord, Tuple, and array values, returning a Result
//!     let shifted = to_feet.convert(c)?;
//!     Ok(shifted)
//! };
//! // ðŸ‘½
//! let usa_m = Point::new(-115.797615, 37.2647978);
//! let usa_ft = usa_m.try_map_coords(
    
    fn multipolygon() {
        let poly1 = polygon![
            (x: 0., y: 0.),
            (x: 10., y: 0.),
            (x: 10., y: 10.),
            (x: 0., y: 10.),
            (x: 0., y: 0.),
        ];
        let poly2 = polygon![
            exterior: [
                (x: 11., y: 11.),
                (x: 20., y: 11.),
                (x: 20., y: 20.),
                (x: 11., y: 20.),
                (x: 11., y: 11.),
            ],
            interiors: [
                [
                    (x: 13., y: 13.),
                    (x: 13., y: 17.),
                    (x: 17., y: 17.),
                    (x: 17., y: 13.),
                    (x: 13., y: 13.),
                ]
            ],
        ];

        let mp = MultiPolygon::new(vec![poly1, poly2]);
        let mp2 = mp.map_coords(|Coord { x, y }| (x * 2., y + 100.).into());
        assert_eq!(mp2.0.len(), 2);
        assert_relative_eq!(
            mp2.0[0],
            polygon![
                (x: 0., y: 100.),
                (x: 20., y: 100.),
                (x: 20., y: 110.),
                (x: 0., y: 110.),
                (x: 0., y: 100.),
            ],
        );
        assert_relative_eq!(
            mp2.0[1],
            polygon![
                exterior: [
                    (x: 22., y: 111.),
                    (x: 40., y: 111.),
                    (x: 40., y: 120.),
                    (x: 22., y: 120.),
                    (x: 22., y: 111.),
                ],
                interiors: [
                    [
                        (x: 26., y: 113.),
                        (x: 26., y: 117.),
                        (x: 34., y: 117.),
                        (x: 34., y: 113.),
                        (x: 26., y: 113.),
                    ],
                ],
            ],
        );
    }