Skip to content

Remove From<String> for Column #17375

@findepi

Description

@findepi

The From & Into conversion system is a very powerful and convenient feature of Rust.
It should be used when there is only one obvious conversion from source type to the target.

However, this appears not to be the case for some conversion into Column.
Consider example

let field: Field = ....;
Expr::Column(field.name().into()))

It seems to create an expression selecting given field.
It is also the simplest conversion from Field to Expr::Column because, From<Field> is not implemented.

However, it doesn't do what it seems it does.
The From<&str> for Column invokes name parser and lower-cases the field

These conversions should be removed:

impl From<&str> for Column {
    fn from(c: &str) -> Self {
        Self::from_qualified_name(c)
    }
}

/// Create a column, cloning the string
impl From<&String> for Column {
    fn from(c: &String) -> Self {
        Self::from_qualified_name(c)
    }
}

/// Create a column, reusing the existing string
impl From<String> for Column {
    fn from(c: String) -> Self {
        Self::from_qualified_name(c)
    }
}

Any usages should be replaced with explicit calls to Column::from_qualified_name.

Metadata

Metadata

Assignees

No one assigned

    Labels

    api changeChanges the API exposed to users of the cratebugSomething isn't workingcommonRelated to common crate

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions