Skip to content

Conversation

@heitor582
Copy link
Contributor

O que esse PR faz?

  • Adiciona estrutura de pasta para algoritmos em rust.
  • Adiciona o extra Palíndromo.

Link para teste
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=21e5c97fb81232061e8bca7e40ab945a

Copy link
Owner

@kelvins kelvins left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Boa @heitor582, valeu pela contrib.

Eu não manjo de Rust mas uma sugestão seria colocar os arquivos .rs dentro de src/rust, por exemplo: src/rust/palindromo.rs e criar uma fn main dentro de cada um, assim os exemplos ficam "isolados", como nos casos de Python, Javascript, etc. (btw, notei que em Go não é feito assim, criei uma issue para resolver isso #65)

Outra sugestão seria evitar de usar dependências externas, tentar resolver só utilizando bibliotecas built-in da linguagem, assim não seria necessário usar o cargo. Neste caso, por exemplo, acredito que poderia ser resolvido com split_whitespace ao invés de regex, por exemplo:

word = word.to_lowercase().split_whitespace().collect::<String>(); let reversed_string: String = word.chars().rev().collect::<String>(); word == reversed_string
@heitor582
Copy link
Contributor Author

Boa tarde, no caso seria criar um cargo new para cada algoritmo?
Acho que se deixar só a função main.rs nos arquivos ele ainda irá procurar por src/main.rs
image

@kelvins
Copy link
Owner

kelvins commented Nov 15, 2020

Minha sugestão seria criar um arquivo ./src/rust/palindromo.rs já com a função main contendo os casos de teste, por exemplo:

fn main() { println!(" -> {:?}", palindromo("".to_string())); println!("a -> {:?}", palindromo("a".to_string())); println!("abba -> {:?}", palindromo("abba".to_string())); println!("abbas -> {:?}", palindromo("abbas".to_string())); println!("tattarrattat -> {:?}", palindromo("tattarrattat".to_string())); println!("Was it a palindrome? -> {:?}", palindromo("Was it a palindrome?".to_string())); println!("No lemon, no melon -> {:?}", palindromo("No lemon, no melon".to_string())); } pub fn palindromo(mut word: String) -> bool{ word = word.to_lowercase().split_whitespace().collect::<String>(); let reversed_string: String = word.chars().rev().collect::<String>(); word == reversed_string }

Assim seria possível executar da seguinte maneira:

$ rustc palindromo.rs $ ./palindromo 

E acredito que não seria necessário o uso do cargo para gerenciar as dependências. Em todo caso, se ainda assim fizer sentido usar o cargo, eu sugeriria usar da mesma forma que é usado aqui: https://github.com/lpxxn/rust-design-pattern

Copy link
Owner

@kelvins kelvins left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Boa 👏

@kelvins kelvins merged commit 4b5f35d into kelvins:main Nov 15, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants