Suppose we have some object C which can be constructed from a pair (A, B).

Is there a From2 in Rust, or is the standard way to just use From<(A, B)> ?

Suppose we have some object C which can be constructed from a pair (A, B).

Is there a From2 in Rust, or is the standard way to just use From<(A, B)> ?

From<(A, B)> is the way to go.

```
fn from((a, b): (A, B)) -> C {
/// ...
}
```

2 Likes

I personally prefer just `fn new(a: A, b: B) -> Self`

unless the conversion from tuple is really obvious and natural, like 2D coord

3 Likes

but then we might need new0, new1, new2, new3, for different pairs …

The naming convention for constructors is:

- Only one constructor, or one where the arguments are obvious:
`new`

- Multiple equally valid constructors:
`from_*`

e.g.

```
enum Anchor { TopLeft, Center }
impl Rectangle {
pub fn from_corners(first: Point, second: Point) -> Self { ... }
pub fn from_dims(dims: (f64, f64), point: Point, anchor: Anchor) -> Self { ... }
}
```

7 Likes

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.