Faits :
A.
Par jugement du 8 juillet 2019, le Tribunal correctionnel de l'arrondissement de l'Est vaudois a libéré A._ des chefs d'accusation de menaces et de contrainte, l'a condamné pour tentative de contrainte, contrainte sexuelle et viol à une peine privative de liberté de 5 ans, sous déduction de 57 jours de détention provisoire et 69 jours de détention pour des motifs de sûreté. Il a également ordonné l'expulsion de A._ du territoire suisse pour une durée de 12 ans et a dit que A._ était le débiteur de B._ d'un montant de 15'000 fr., avec intérêts à 5% l'an dès le 8 juillet 2018, à titre d'indemnité pour tort moral.
B.
Par jugement du 13 novembre 2019, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel formé par A._ à l'encontre du jugement précité, qu'elle a confirmé.
Les faits retenus par la Cour d'appel pénale sont en substance les suivants.
B.a. A._ est né en 1983 à C._, en Bosnie-Herzégovine, pays dont il est ressortissant. Après avoir suivi l'école primaire, il a effectué une formation de technicien en tourisme. II a ensuite travaillé dans le café de son père, tout en se lançant en parallèle, depuis 5 ans environ, dans le commerce de voitures d'occasion. Son revenu s'élève à un montant compris entre 1'000 et 1'500 euros par mois. Il vit chez sa mère à D._, en Bosnie-Herzégovine. Il a un enfant âgé de 9 ans, lequel vit en Allemagne avec sa mère et ancienne compagne, dont il a pris le nom de famille bien qu'ils n'étaient pas mariés. Il écrit régulièrement à son fils.
Le casier judiciaire suisse de A._ comporte les inscriptions suivantes:
- 19 août 2013, Ministère public du canton du Tessin, Bellinzone: faux dans les certificats; peine pécuniaire de 45 jours-amende à 100 fr., avec sursis pendant 3 ans, et amende de 1'100 francs; sursis révoqué le 26 février 2014;
- 25 octobre 2013, Ministère public du canton de Soleure: vol; peine pécuniaire de 15 jours-amende à 30 fr., avec sursis pendant 2 ans, et amende de 200 francs; sursis révoqué le 26 février 2014;
- 26 février 2014, Ministère public du canton du Valais, Office régional du Bas-Valais: vol; peine pécuniaire de 45 jours-amende à 100 fr., avec sursis pendant 2 ans; sursis révoqué le 30 septembre 2014;
- 23 mars 2014, Ministère public du canton de Bâle-Ville: entrée illégale, séjour illégal, violation de domicile et vol d'importance mineure: peine pécuniaire de 60 jours-amende à 30 fr. et amende de 150 francs;
- 21 août 2014, Ministère public régional de Berne-Mittelland: entrée illégale et séjour illégal; peine privative de liberté de 60 jours;
- 30 septembre 2014, Ministère public de l'arrondissement de Lausanne: entrée illégale et séjour illégal; peine privative de liberté de 60 jours;
- 20 avril 2017, Ministère public régional d'Altstätten: faux dans les certificats et conduite d'un véhicule automobile sans le permis de conduire requis; peine pécuniaire de 100 jours-amende à 30 francs;
- 28 juillet 2017, Ministère public de l'arrondissement de l'Est vaudois: conduite d'un véhicule automobile sans le permis de conduire requis et contravention à l'OCR (Ordonnance sur les règles de la circulation routière du 13 novembre 1962; RS 741.11); peine pécuniaire de 50 jours-amende à 30 fr. et amende de 300 francs.
Ce casier est établi au nom de E._, né en 1979, de nationalité croate. II est toutefois démontré que A._ a usé de cette identité et de faux papiers à ce nom afin de faciliter ses déplacements en Europe. D'ailleurs, l'extrait du casier mentionne l'identité réelle de l'intéressé, soit le nom de A._ et la date exacte de naissance en 1983, en tant qu'alias. En outre, y apparaît le nom de F._ sous la rubrique «nom de la mère» de E._. Or, il s'agit bien du nom de la mère de A._.
Le prénommé a également un casier judiciaire en Allemagne, où il a fait l'objet des deux condamnations suivantes:
- 13 décembre 2007, Tribunal de Rosenheim: recel, en concours avec entrée et séjour illégaux et séjour sans passeport; peine privative de liberté de 6 mois, avec sursis jusqu'au 27 décembre 2010;
- 6 avril 2011, Tribunal de Miesbach: entrée et séjour illégaux après renvoi; peine pécuniaire de 130 jours-amende à 25 euros.
A._ a enfin fait l'objet d'une condamnation en Italie, le 28 mars 2012, par le Tribunal de Milan, à une peine de réclusion de 8 mois et à une amende de 200 euros, avec sursis, pour complicité de tentative de vol.
B.b. A._ a fait la connaissance de sa compatriote B._ au mois de juin 2018, en Suisse, par l'intermédiaire d'une connaissance commune. Ils sont allés manger ensemble à une reprise dans une pizzeria, à G._, à la fin du mois de juin 2018.
B.b.a. Le 2 juillet 2018, A._ a pris contact par téléphone avec B._ pour lui demander de venir le chercher à la gare de H._ le lendemain.
Celle-ci a accepté et s'est donc rendue à H._ le lendemain 3 juillet 2018 pour y prendre en charge A._ et le déposer, à sa demande, à 11h30 à I._, en Valais, où ce dernier devait prendre un véhicule.
Ce même 3 juillet 2018, vers 14h00-15h00, A._ s'est présenté au domicile de B._, à J._, et lui a demandé de lui faire à manger, ce que cette dernière a accepté. Durant le repas, il lui a montré ses tatouages sur les bras, lui a déclaré être un criminel, être interdit d'entrée dans plusieurs pays (notamment en Allemagne et en Italie) et posséder plusieurs faux passeports. Il a également raconté à B._ qu'il avait abattu son beau-père en Bosnie, ce dernier ayant pris fait et cause pour sa fille dans le cadre de leur séparation.
A un moment donné, lorsque B._ a voulu se lever de table, A._ l'a saisie par les poignets, l'a entraînée dans la chambre à coucher, puis l'a jetée sur le lit. B._ a tenté de se débattre, sans pouvoir empêcher A._ de se coucher sur elle et de mettre une de ses jambes entre les siennes. A._ a alors ouvert le pantalon de B._, puis lui a touché le sexe. Dès lors que la jeune femme pleurait, il lui a asséné une, voire deux gifles, avant de lui toucher à nouveau le sexe et d'introduire deux doigts dans son vagin. B._ s'est alors mise à crier. A._ s'est relevé sur ses genoux et s'est positionné devant elle, entre ses jambes qu'il a soulevées au-dessus de lui, tout retirant son pantalon et sa culotte. B._ a ensuite été pénétrée vaginalement, avant que A._ ne la retourne sur le ventre. Il l'a ensuite pénétrée analement, après l'avoir saisie au niveau des hanches. La jeune femme hurlant de douleur, A._ l'a saisie par la nuque et lui a enfoncé le visage sur le matelas, avant de lui dire que de toute manière, "les femmes adoraient ça" et que "c'était excitant".
Postérieurement à l'acte sexuel, B._ demandé à A._ ce qui arriverait si elle venait à parler à quelqu'un de ce qui venait de se passer. Celui-ci a répondu qu'il la surveillait depuis le mois de février, qu'il savait tout sur elle, en particulier qu'elle avait des enfants, et que si elle venait à parler, il s'en prendrait à eux.
Vers 16h30-17h00, A._ a quitté les lieux. Il est revenu sur place, pour y dormir, le même jour vers 20h00-20h30. B._, terrorisée par l'attitude intimidante adoptée et les menaces que A._ avait proférées précédemment, a accepté qu'il dorme sous son toit, ce que chacun a fait dans des pièces séparées.
B.b.b. Le 6 juillet 2018 au matin, A._ est parti. Il est revenu au domicile de B._ vers 13h30. A un moment donné, alors qu'il sortait des toilettes, il a appelé B._, prétextant devoir lui montrer quelque chose. Lorsqu'elle s'est approchée de lui, elle a immédiatement remarqué que son pantalon était ouvert. A._ l'a alors agrippée par le bras et l'a poussée jusqu'à la chambre à coucher, avant de l'asseoir sur le lit. Il a ensuite baissé son pantalon, a attrapé B._ par les cheveux et a dirigé sa tête vers son sexe en érection. B._ a tourné la tête dans tous les sens pour manifester son refus. A._ l'a alors lâchée, puis l'a immédiatement poussée, avant de la coucher sur le lit. Il s'est ensuite posé à califourchon sur sa poitrine, et l'a à nouveau prise par les cheveux, avec une main. A l'aide de son autre main, il a dirigé son sexe vers la bouche de la jeune femme. Cette dernière refusant d'ouvrir la bouche, A._ lui a pincé le nez, afin de la contraindre à agir en ce sens, en vain. Il a également tenté de lui serrer la mâchoire inférieure, toujours sans succès. Alors que B._ tentait de se dégager, il l'a attrapée par les genoux, qu'il a soulevés, avant de lever la robe puis de baisser la culotte de sa victime. A._ l'a alors une nouvelle fois pénétrée vaginalement, avant d'éjaculer sur ses cuisses.
B.b.c. B._ a revu une dernière fois A._ dans l'après-midi du 7 juillet 2018. Agacé d'apprendre qu'elle s'était visiblement confiée à une amie, A._ lui a répété qu'elle savait très bien ce qui allait lui arriver et qu'il était suffisamment malin pour ne pas se faire attraper par la police. Il a ensuite quitté les lieux.
B.c. B._ a déposé plainte pénale et s'est constituée partie plaignante le 8 juillet 2018.
L'examen effectué le même jour au Centre universitaire romand de médecine légale (ci-après: CURML) sur la personne de l'intéressée a permis de constater la présence des lésions traumatiques suivantes:
- une ecchymose suprascapulaire droite;
- une ecchymose de la face interne du coude droit;
- une ecchymose de la face interne du tiers moyen de la cuisse droite;
- une ecchymose de la face antéro-interne du genou droit;
- une ecchymose du tiers moyen de la face antéro-interne de la jambe gauche;
- une dermabrasion de la face externe du poignet gauche;
- une dermabrasion de la face dorsale de la deuxième articulation métacarpo-phalangienne gauche.
Les médecins du CURML n'ont pas constaté de lésions vaginales ni anales. Toutefois, selon leurs conclusions, l'absence de lésions ou de traces n'exclut pas des relations vaginales ou anales et ne donne pas d'information quant au fait que la relation sexuelle aurait été consentie ou non. Quant aux dermabrasions, elles pouvaient être contemporaines des faits, tandis que les ecchymoses pouvaient avoir été provoquées par un, voire des objets heurtant le corps ou contre lequel le corps s'est heurté, ou par une pression locale forte. Elles pouvaient être contemporaines des faits, étant précisé que B._ n'avait fourni aucun mécanisme lésionnel précis lors de son examen.
C.
A._ forme un recours en matière pénale au Tribunal fédéral contre le jugement de la Cour d'appel pénale du Tribunal cantonal vaudois du 13 novembre 2019. Il conclut, avec suite de frais et dépens, principalement, à l'annulation du jugement attaqué et au renvoi de la cause pour nouvelle instruction et nouvelle décision dans le sens des considérants. Subsidiairement, il conclut à la réforme du jugement entrepris en ce sens qu'il est en particulier libéré des chefs d'accusation de tentative de contrainte, contrainte sexuelle, viol, menaces et contrainte. Plus subsidiairement, il conclut à la réforme du jugement attaqué en ce sens qu'il est condamné à une peine privative de liberté de trois ans, sous déduction de la détention provisoire et de la détention pour des motifs de sûretés subies, et que son expulsion du territoire est ordonnée pour une durée de six ans. Il sollicite également le bénéfice de l'assistance judiciaire.
Considérant en droit :
1.
Le recourant fait grief à la cour cantonale d'avoir violé son droit d'être entendu en refusant d'entendre son ex-compagne, dont il avait requis l'audition en appel.
1.1. Le droit d'être entendu, garanti à l'art. 29 al. 2 Cst., comprend notamment celui de produire ou de faire administrer des preuves, à condition qu'elles soient pertinentes et de nature à influer sur la décision à rendre (ATF 143 V 71 consid. 4.1 p. 72; 142 II 218 consid. 2.3 p. 222; 140 I 285 consid. 6.3.1 p. 229 et les références citées). Il n'empêche pas le juge de mettre un terme à l'instruction lorsque les preuves administrées lui ont permis de se forger une conviction et que, procédant de manière non arbitraire à une appréciation anticipée des preuves qui lui sont encore proposées, il a la certitude qu'elles ne pourraient pas l'amener à modifier son opinion. Le refus d'instruire ne viole ainsi le droit d'être entendu des parties que si l'appréciation anticipée de la pertinence du moyen de preuve offert, à laquelle le juge a procédé, est entachée d'arbitraire (ATF 144 II 427 consid. 3.1.3 p. 435; 141 I 60 consid. 3.3 p. 64; 136 I 229 consid. 5.3 p. 236).
1.2. Selon l'art. 389 al. 1 CPP, la procédure de recours se fonde sur les preuves administrées pendant la procédure préliminaire et la procédure de première instance. L'art. 389 al. 3 CPP règle les preuves complémentaires. Ainsi, la juridiction de recours administre, d'office ou à la demande d'une partie, les preuves complémentaires nécessaires au traitement du recours. Le droit d'être entendu, consacré par l'art. 107 CPP, garantit aux parties le droit de déposer des propositions relatives aux moyens de preuves (al. 1 let. e). Conformément à l'art. 139 al. 2 CPP, il n'y a pas lieu d'administrer des preuves sur des faits non pertinents, notoires, connus de l'autorité ou déjà suffisamment prouvés. Cette disposition codifie, pour la procédure pénale, la règle jurisprudentielle déduite de l'art. 29 al. 2 Cst. en matière d'appréciation anticipée des preuves (arrêt 6B_397/2020 du 24 juillet 2020 consid. 1.1 et les références citées).
1.3. En l'espèce, la cour cantonale a refusé la mesure d'instruction requise au motif que l'audition de l'ex-compagne du recourant n'était pas nécessaire pour apprécier les faits de la cause. Elle a considéré que son témoignage n'aurait qu'une valeur probante très faible, compte tenu de ses liens avec le recourant, soit son ex-compagnon et père de son enfant. Elle ajouté qu'elle était domiciliée en Allemagne et n'était en tout état de cause pas présente lors des évènements litigieux. Elle ne pouvait tout au plus qu'en donner la version qui lui avait été rapportée par le recourant.
Le recourant objecte qu'il a été privé d'entendre un témoin à décharge et un témoin de moralité. Il échoue toutefois à démontrer en quoi l'appréciation anticipée à laquelle s'est livrée la cour cantonale serait entachée d'arbitraire. Contrairement à ce qu'il semble soutenir, la cour cantonale n'a pas retenu, de manière générale, que les auditions de témoins n'auraient de pertinence qu'à l'égard de personnes "présentes lors des événements litigieux". Quoi qu'il en soit, le recourant ne fournit pas la moindre explication destinée à exposer sur quel point, s'agissant des faits proprement dits, le témoignage de son ex-compagne aurait été susceptible d'apporter un quelconque éclairage. De surcroît, la cour cantonale n'a pas retenu que le recourant avait abattu son beau-père en Bosnie, mais qu'il avait prétendu l'avoir fait en évoquant son passé de criminel lors de la conversation qu'il avait eue avec l'intimée le 3 juillet 2018, peu avant les premiers faits litigieux. La nuance semble lui échapper. Dans cette mesure, la cour cantonale pouvait retenir sans arbitraire que le témoignage requis n'était non plus déterminant sur ce point. Enfin, l'appréciation de la cour cantonale n'apparaît pas non plus insoutenable en ce qui concerne la portée qu'aurait pu revêtir le témoignage de son ex-compagne concernant la situation personnelle du recourant. Le grief s'avère par conséquent mal fondé.
2.
Invoqua nt de surcroît une violation de l'art. 347 al. 1 CPP, le recourant fait valoir qu'au moment de s'exprimer une dernière fois à l'issue des plaidoiries, il "aurait rapidement été interrompu par le Président de la Cour d'appel, qui lui aurait signifié qu'il n'avait qu'une ou deux minutes à disposition."
2.1. Aux termes de l'art. 347 al. 1 CPP, le prévenu a le droit de s'exprimer une dernière fois au terme des plaidoiries. Ce droit de s'exprimer en dernier reconnu au prévenu vise à garantir son droit d'être entendu. Il s'agit d'un droit personnel du prévenu de s'exprimer brièvement, mais non d'un droit conférant la faculté de formuler de longs développements ou d'apporter un complément de plaidoiries (arrêts 6B_1223/2019 du 27 mars 2020 consid. 5.3; 6B_751/2017 du 29 mars 2018 consid. 4.2; 6B_488/2014 du 30 septembre 2014 consid. 3.2), sachant que le prévenu ou son défenseur bénéficie déjà, en plaidoiries, de deux tours de parole à la suite des autres parties (art. 346 al. 1 let. d et 2 CPP).
2.2. En l'espèce, il ressort du procès-verbal de l'audience d'appel qu'à l'issue des plaidoiries, le président a demandé au recourant, par l'intermédiaire de l'interprète, s'il avait quelque chose à ajouter pour sa défense. Il ressort également dudit procès-verbal que le recourant a bien pu s'exprimer en dernier. Il se plaint toutefois d'avoir été interrompu, en exposant avoir interpellé sur ce point le précédent conseil du recourant et en faisant valoir que celui-ci a "essentiellement confirmé" les éléments précités. Il reproche également à la cour cantonale de ne pas avoir verbalisé ses propos. Il ne prétend cependant pas avoir été privé de faire retranscrire au procès-verbal l'interruption dont il se plaint ou d'y faire inscrire la teneur de ses dernières déclarations. Il ne soutient pas non plus s'en être plaint directement en audience devant la cour cantonale. Faute pour lui de l'avoir fait, le grief, tel que soulevé devant le Tribunal fédéral, apparaît contraire à la bonne foi (cf. ATF 143 IV 397 consid. 3.4.2 p. 406; 143 IV 408 consid. 6.3.2 p. 418; arrêt 6B_745/2017 du 12 mars 2018 consid. 1.3). En tout état, ce même grief n'en demeure pas moins invoqué en décrivant une situation au conditionnel, sans compter que le recourant n'expose pas en quoi l'absence de verbalisation du contenu même de ses ultimes déclarations aurait été susceptible de lui porter préjudice. L'art. 347 CP ne confère au demeurant qu'un droit de s'exprimer brièvement, si bien qu'on ne décèle aucune violation du droit fédéral sur ce point. Ainsi, même à supposer qu'il soit recevable, le grief s'avère en tous les cas mal fondé.
3.
Le recourant se plaint ensuite d'arbitraire dans l'établissement des faits et reproche à la cour cantonale d'avoir violé la présomption d'innocence. La cour cantonale aurait motivé son jugement "à la carte", en retenant uniquement les éléments à charge, mais sans évoquer ni même traiter les éléments à décharge.
3.1. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (art. 105 al. 1 LTF), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat (ATF 145 IV 154 consid. 1.1 p. 155 s.; 143 IV 500 consid. 1.1 p. 503; sur la notion d'arbitraire v. ATF 143 IV 241 consid. 2.3.1 p. 244). Le Tribunal fédéral n'entre en matière sur les moyens fondés sur la violation de droits fondamentaux, dont l'interdiction de l'arbitraire, que s'ils ont été invoqués et motivés de manière précise (art. 106 al. 2 LTF; ATF 143 IV 500 consid. 1.1 p. 503). Les critiques de nature appellatoire sont irrecevables (ATF 145 IV 154 consid. 1.1 p. 156).
La présomption d'innocence, garantie par les art. 10 CPP, 32 al. 1 Cst., 14 par. 2 Pacte ONU II et 6 par. 2 CEDH, ainsi que son corollaire, le principe "in dubio pro reo", concernent tant le fardeau de la preuve que l'appréciation des preuves au sens large. En tant que règle sur le fardeau de la preuve, elle signifie, au stade du jugement, que le fardeau de la preuve incombe à l'accusation et que le doute doit profiter au prévenu. Comme règle d'appréciation des preuves, la présomption d'innocence signifie que le juge ne doit pas se déclarer convaincu de l'existence d'un fait défavorable à l'accusé si, d'un point de vue objectif, il existe des doutes quant à l'existence de ce fait. Il importe peu qu'il subsiste des doutes seulement abstraits et théoriques, qui sont toujours possibles, une certitude absolue ne pouvant être exigée. Il doit s'agir de doutes sérieux et irréductibles, c'est-à-dire de doutes qui s'imposent à l'esprit en fonction de la situation objective. Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence au principe "in dubio pro reo", celui-ci n'a pas de portée plus large que l'interdiction de l'arbitraire (ATF 145 IV 154 consid. 1.1 p. 155 s. et les références citées).
Lorsque l'autorité cantonale a forgé sa conviction quant aux faits sur la base d'un ensemble d'éléments ou d'indices convergents, il ne suffit pas que l'un ou l'autre de ceux-ci ou même chacun d'eux pris isolément soit à lui seul insuffisant. L'appréciation des preuves doit en effet être examinée dans son ensemble. Il n'y a ainsi pas d'arbitraire si l'état de fait retenu pouvait être déduit de manière soutenable du rapprochement de divers éléments ou indices. De même, il n'y a pas d'arbitraire du seul fait qu'un ou plusieurs arguments corroboratifs apparaissent fragiles, si la solution retenue peut être justifiée de façon soutenable par un ou plusieurs arguments de nature à emporter la conviction (arrêts 6B_397/2020 précité consid. 1.2; 6B_389/2020 du 24 juin 2020 consid. 1.1; 6B_150/2020 du 19 mai 2020 consid. 4.1).
3.2. En l'espèce, il est constant que les parties ont présenté une version des faits diamétralement opposée. Pour retenir celle de l'intimée et écarter celle du recourant, la cour cantonale s'est fondée, à la suite des premiers juges, sur une pluralité d'éléments.
De manière générale, la cour cantonale a retenu que l'intimée avait été constante dans ses déclarations tout au long de l'instruction, et ce aussi bien devant les enquêteurs que devant les médecins du CURML. S'agissant des propos tenus à l'adresse de l'intimée par le recourant au sujet de son passé judiciaire, elle avait livré un récit crédible et vérifié qu'elle ne pouvait tenir que de lui.
Le rapport établi par les médecins du CURML mettait de surcroît en évidence des lésions sous forme d'ecchymoses et de dermabrasions sur la nuque, les bras, les cuisses, les genoux et les poignets (cf. supra B.c; pièce 6), jugées compatibles avec le déroulement des faits décrits par l'intimée. Sur ce point, le recourant objecte qu'un tel constat ne ressortirait pas dudit rapport. Or, il suffit de le lire pour constater qu'il se conclut précisément par la phrase suivante: "Les lésions constatées sont compatibles avec les déclarations de [l'intimée]." (pièce 6, p. 8 i. f.). Pour cette même raison, la cour cantonale pouvait exclure sans arbitraire que l'intimée eût pu s'infliger elle-même certaines de ces lésions, quoique le recourant fasse valoir que médecins "n'indiquent pas non plus que [l'intimée] n'aurait pas pu s'infliger elle-même ces lésions". Dans la mesure où le rapport établit sans ambiguïté la compatibilité des lésions constatées avec les dires de l'intimée, on ne voit pas pour quelle raison les médecins auraient dû, pour que leur constat puisse être pris en compte sans arbitraire par la cour cantonale, simultanément écarter l'hypothèse d'un comportement auto-agressif. Ce d'autant moins que le recourant échoue à établir que la cour cantonale aurait arbitrairement omis de prendre en compte un quelconque élément susceptible de donner corps à l'hypothèse qu'il formule à cet égard. Mutatis mutandis, le même argument prévaut s'agissant des prétendues pratiques sadomasochistes que le recourant prête à l'intimée pour tenter d'expliquer ses lésions.
Par ailleurs, le recourant ne peut rien tirer en sa faveur de ce que le rapport des médecins du CURML ne constate aucune lésion au niveau vaginal ou anal. Les médecins ont en effet relevé que cet état de fait n'excluait pas qu'il y ait eu une relation sexuelle de cette nature. Ils ont de surcroît précisé que l'absence de lésion ne donnait pas d'information quant au fait qu'une relation sexuelle avait été consentie ou non (cf. supra B.c; pièce 6, p. 8 i. f.). Il s'ensuit que les constatations cantonales relatives à l'origine des lésions subies par l'intimée et à la nature des actes sexuels et d'ordre sexuels endurés par cette dernière échappent à la critique. Force est au contraire d'admettre que les juges précédents étaient fondés à se baser sur le rapport médical en cause pour en déduire un élément supplémentaire accréditant la version de l'intimée.
En marge de ce qui précède, la cour cantonale a encore relevé que l'intimée avait expliqué de manière crédible, soit en mettant en exergue sa crainte de représailles à son encontre et à l'encontre de ses enfants, la raison pour laquelle elle avait accepté que le recourant revienne à son domicile après sa première agression. La cour cantonale a de surcroît souligné les circonstances de la dénonciation, liée à l'intervention d'une voisine, qui avait constaté l'état de panique de l'intimée et qui avait elle-même alerté la police. Pour les juges précédents, l'intimée était apparue sincère et éprouvée. Elle avait présenté juste après les faits une symptomatologie caractéristique d'un vécu post-traumatique et avait fait part des agressions sexuelles à son médecin traitant. Les constats effectués sur les plans physique et psychologique se rejoignaient. A l'inverse, la version du recourant, n'apparaissait guère crédible, compte tenu de son incapacité à expliquer les traces sur le corps de l'intimée ou encore en raison du fait qu'il l'avait largement critiquée, en alléguant qu'elle était sadomasochiste, qu'elle était instable psychiquement ou encore narcissique.
Sur le vu de ce qui précède, on ne saurait reprocher à la cour cantonale d'avoir motivé son jugement "à la carte", en passant sous silence des éléments à décharge. Il apparaît au contraire que la cour cantonale a mis en évidence différents éléments probants qui lui permettaient d'établir les faits dans le sens retenu sans verser dans l'arbitraire. Dans cette même mesure, on ne saurait davantage lui reprocher d'avoir violé la présomption d'innocence. Les griefs du recourant s'avèrent là encore infondés, dans la mesure de leur recevabilité.
4.
Le recourant critique enfin, à titre subsidiaire, la quotité de la peine qui lui a été infligée, qu'il juge trop sévère et qui n'aurait pas dû, selon lui, dépasser trois ans. Il conteste également la durée de son expulsion, qui devrait être ramenée à 6 ans au lieu de 12 ans.
Les griefs du recourant se fondent toutefois sur la prémisse selon laquelle les juges précédents auraient refusé à tort d'entendre son ex-compagne ou arbitrairement établi les faits, notamment en retenant un acte de sodomie infligé à l'intimée. La prémisse étant erronée (cf. supra consid. 1 et 2), le grief ne peut qu'être déclaré irrecevable, sans compter que le recourant ne développe en réalité aucune motivation topique, conforme aux exigences déduites de l'art. 42 al. 2 LTF, destiné à démontrer en quoi la cour cantonale aurait violé les art. 47 CP ou 66a CP. Il ne se plaint pas non plus d'une violation de l'art. 49 CP. Cela étant, on ne discerne pas en quoi la cour cantonale aurait abusé du large pouvoir d'appréciation qui lui est reconnu dans ce contexte, tant en ce qui concerne la quotité de la peine que la durée de l'expulsion.
5.
Il s'ensuit que le recours doit être rejeté dans la mesure où il est recevable. Comme il était dénué de chance de succès, la demande d'assistance judiciaire doit être rejetée (art. 64 al. 1 LTF). Le recourant, qui succombe, supporte les frais judiciaires, dont le montant sera fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable (art. 65 al. 2 et 66 al. 1 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 17 août 2020
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Dyens